2017-05-07 28 views
1

我的HTML代码: -如何在jquery中添加减号?

<input type="text" id="test"> 
<span class="display"></span> 

我的jQuery代码:

$("#test").keyup(function(e){ 
    $('span.display').text(formatCurrency($(this).val())); 
    this.value = this.value.replace(/[^0-9\.]/g,''); 
}); 

演示和完整的代码是这样的:https://jsfiddle.net/oscar11/nbLbb037/

我想输入文字可以输入:-10000000

而在课堂展示中显示的结果是:-10.000.000

如何添加减号(-)符号?

回答

2

需要改变像下面的代码: -

output = output.reverse(); 
if(output[1] == '.'){ 
    output.splice(1, 1); 
    formatted = output.join(""); 
}else{ 
    formatted = output.join(""); 
} 

而且每一件事情都会好起来的。

例子: -

$("#test").keyup(function(e){ 
 
    
 
    $('span.display').text(formatCurrency($(this).val())); 
 
    this.value = this.value.replace(/[^0-9\.-]/g,''); 
 
}); 
 

 

 
// format currency on pagu and revisi 
 
var formatCurrency = function(num){ 
 
    var str = num.toString().replace("$", ""), parts = false, output = [], i = 1, formatted = null; 
 
    if(str.indexOf(",") > 0) { 
 
     parts = str.split(","); 
 
     str = parts[0]; 
 
    } 
 
    str = str.split("").reverse(); 
 
    for(var j = 0, len = str.length; j < len; j++) { 
 
     if(str[j] != ".") { 
 
      output.push(str[j]); 
 
      if(i%3 == 0 && j < (len - 1)) { 
 
       output.push("."); 
 
      } 
 
      i++; 
 
     } 
 
    } 
 
    output = output.reverse(); 
 
    if(output[1] == '.'){ 
 
     output.splice(1, 1); 
 
     formatted = output.join(""); 
 
    }else{ 
 
     formatted = output.join(""); 
 
    } 
 
    return(formatted + ((parts) ? "," + parts[1].substr(0, 1) : "")); 
 
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="test"> 
 
<span class="display"></span>

+0

看起来很奇怪。你试试输入:'-100000'。结果'-.100.000'。如果结果如下:'-100.000' –

+0

如果删除了那一行,那么你可以在文本框中添加任何内容。 -23sfd.sdf83243。这会使情况变得更糟。 –

+0

@samueltoh请现在检查答案。 Ashokkumar M. Prajapati我已经添加了该行(您是对的),并更改了代码以使其可行。 –

0

加上减号,是很容易的,只需更换

this.value = this.value.replace(/[^0-9\.]/g,''); 

与以下

this.value = this.value.replace(/[^0-9\.-]/g,''); 

更新JS小提琴被https://jsfiddle.net/nbLbb037/3/

不过。您需要使用正则表达式测试来验证确切的货币测试。尝试探索你的“formatCurrency”函数的js正则表达式测试。当然这就是你自己。目前的解决方案会让你进一步移动。

我更新了小提琴上的正则表达式js代码。请参阅https://jsfiddle.net/nbLbb037/5/

+0

它看起来很奇怪。你试试输入:'-100000'。结果'-.100.000'。结果应该如此:'-100.000' –

+0

这就是为什么我要让它进行正则表达式测试。你正在做的是替换除你指定的字符之外的所有字符。 –

+0

记住这个新的js表达式代码会让你输入数据,其中“ - ”可以在那里,但可选,数字11111.1111,你只能有一个“。”。你不能在其中添加“,”。您可以根据需要修改正则表达式。 –

相关问题