3

我正在尝试在用户生成的文本之后附加“USD”作为 html 输入中的一个单元。现在我有一些 jquery 在任何输入文本之前附加一个 $ ,然后在每个 keyup 上重建输入

   $('#pledge_amt_gross_total').on('keyup',function(){
      var text = this.value;
      $(this).val("");
      if (text.indexOf("$") == -1){
         text = "$ " +text;
       }
      $(this).val(text);

    }) 

这适用于before用户输入文本的任何内容,但是当我尝试附加任何after用户文本时,它无法正常工作。

4

2 回答 2

4

我制作了一个带有正则表达式的版本来查找输入中的数字并将其包装成你想要的。我添加了一个超时以防止在用户完成输入之前移动光标。试试这个小提琴

编码 :

var formatTimeout;
$("#pledge_amt_gross_total").on("keyup", function() {
    var self = $(this);
    clearTimeout(formatTimeout);
    formatTimeout = setTimeout(function() {
        var regex = /\d+/;
        var amount = self.val().match(regex);
        if (amount.length > 0) {
         self.val("$ " + amount + " USD");   
        } else {
              self.val("");       
        }   
    }, 1000);
});

如果您希望它更快或更慢,您可以更改在 setTimout 函数中应用格式之前的时间。


编辑 :

如果您希望任何数字以格式连接:fiddle

var formatTimeout;
$("#pledge_amt_gross_total").on("keyup", function() {
    var self = $(this);
    clearTimeout(formatTimeout);
    formatTimeout = setTimeout(function() {
        var regex = /\d+/g;
        var amount = self.val().match(regex);
        if (amount.length > 0) {
         self.val("$ " + amount.join("") + " USD");   
        } else {
              self.val("");       
        }   
    }, 1000);
});

我将正则表达式替换为可以找到任何数字的全局正则表达式。然后我将数字合二为一。

于 2013-07-26T19:24:17.663 回答
2

只是改变

if (text.indexOf("$") == -1){
    text = "$ " +text;
}

if (text.indexOf("$") == -1){
    text = "$ " +text;
}
if (!(test.indexOf("USD") >= 0)){
    text = text + " USD";
}
于 2013-07-26T18:49:42.003 回答