Jquery 在用户输入期间在html输入中保留文本
我试图在html输入中以用户生成的文本为单位添加“USD”。现在我有一些jquery,它在任何输入文本之前追加$,然后在每个keyup上重建输入Jquery 在用户输入期间在html输入中保留文本,jquery,html,input,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;
$('#pledge_amt_gross_total').on('keyup',function(){
var text = this.value;
$(this).val("");
if (text.indexOf("$") == -1){
text = "$ " +text;
}
$(this).val(text);
})
这适用于用户输入文本之前的任何,但是当我尝试在用户文本之后添加任何,它就不起作用了 改变一下
if (text.indexOf("$") == -1){
text = "$ " +text;
}
到
我已经制作了一个带有正则表达式的版本,用于在输入中查找数字,并将其包装到您想要的内容中。我添加了一个超时,以防止在用户完成输入之前移动光标。试试这个
守则:
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函数中应用格式之前的时间更快或更慢,则可以更改该时间
编辑:
如果您希望任何数字的格式为concat:
我将正则表达式替换为可以查找任何数字的全局正则表达式。然后我将数字合并为一。这也不起作用。由于输入值随后变为val=“$55 USD”,因此下次我要添加更多字符(或更改数字)时,它会创建一个类似“$6USD55”的字符串,其中数字是在USD之后添加的,而不是在$之后添加的sign@AlexNeigher在添加之前,您必须检查文本是否已经包含USD。见我的编辑我仍然在输入中得到像$4 USD444这样的字符串。问题是,当你按下一个键后,一旦它工作正常,然后你再按下另一个键,它不会改变原始字符串,只会将其添加回var text@user2532739的末尾。这更接近了,但是如果我键入一些内容,等待填充值,然后继续键入,它不会编辑最初包含的值,它只是在最后添加,然后删除。好的,我将用这个版本编辑我的文章,这个版本可以接受任何数字,并对它进行连接:注意,通过连接,你实际上不需要setTimeout。
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);
});
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);
});