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

标签 jquery html input

我正在尝试在用户生成的文本后面附加“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);

    }) 

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

最佳答案

我制作了一个带有正则表达式的版本来查找输入中的数字并将其包装在您想要的内容中。我添加了一个超时以防止在用户完成输入之前移动光标。试试这个 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);
});

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

关于jquery - 在用户输入期间将文本保留在 html 输入中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17888784/

相关文章:

html - 输入类型搜索 - 如何获得白色的占位符和清除按钮?

java - JUnit 测试布局

javascript - jQuery/Javascript : fire a rightclick on a normal-click?

javascript - Jquery - 根据数值更改跨度文本颜色

javascript - html输入框消失

javascript - jQuery 为选项卡使用特定的 UL 元素

javascript - 从外部文件访问 jquery 附加元素

jquery - 单击添加购物车按钮时如何使用购物车计数增量

css - IE9 中不可预测的嵌套 div 水平位置

php - Yii 形式和输入值