在用户输入期间在html输入中保留文本

时间:2013-07-26 18:46:34

标签: jquery html input

我正在尝试在html输入中将用户生成的文本作为一个单元追加“USD”。现在我有一些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用户文本时,它无法正常工作。

2 个答案:

答案 0 :(得分:4)

我已经创建了一个带有正则表达式的版本来查找输入中的数字并将其包装在您想要的内容中。我添加了一个超时,以防止在用户完成输入之前移动光标。请在此fiddle

中试用

代码:

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);
});

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

答案 1 :(得分:2)

只需更改

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

if (text.indexOf("$") == -1){
    text = "$ " +text;
}
if (!(test.indexOf("USD") >= 0)){
    text = text + " USD";
}