Javascript 三对三分开?
当在输入:文本中键入数字时,如何将它们三到三分开,并在它们之间输入:,? 正常数字格式设置 示例:在输入中键入此数字:45656839 现场结果-在线输入相同:45656839 我不想使用插件。Javascript 三对三分开?,javascript,jquery,Javascript,Jquery,当在输入:文本中键入数字时,如何将它们三到三分开,并在它们之间输入:,? 正常数字格式设置 示例:在输入中键入此数字:45656839 现场结果-在线输入相同:45656839 我不想使用插件。 恕我直言,我认为屏蔽输入插件可能是一个很好的解决方案。您可以在这里阅读更多内容:我认为屏蔽输入插件可能是一个很好的解决方案。您可以在此处阅读更多内容: 发件人: From:只需做一些未经测试的事情,就可以了: $(':text').blur(function(){ var $this = $(thi
恕我直言,我认为屏蔽输入插件可能是一个很好的解决方案。您可以在这里阅读更多内容:我认为屏蔽输入插件可能是一个很好的解决方案。您可以在此处阅读更多内容: 发件人:
From:只需做一些未经测试的事情,就可以了:
$(':text').blur(function(){
var $this = $(this), val = $this.val(), newVal = ''
for (var i = 0; i < val.length; i++) {
newVal += val.charAt(i)
if (!((i + 1) % 3))
newVal += ','
}
$this.val(newVal.slice(0,-1))
})
编辑:见上面约瑟夫的答案。他的头发比较短。只需做一些未经测试的事情,就可以了:
$(':text').blur(function(){
var $this = $(this), val = $this.val(), newVal = ''
for (var i = 0; i < val.length; i++) {
newVal += val.charAt(i)
if (!((i + 1) % 3))
newVal += ','
}
$this.val(newVal.slice(0,-1))
})
编辑:见上面约瑟夫的答案。他的头发比较短
这应该对你有用
<input type="text" class="numeric" />
编辑
对于普通的数字格式,代码有点不同。可能有一个很好的正则表达式用于此,但我的第一个想法是反转字符串并应用相同的技术。然后你再次反转字符串,就得到了它
$("input:text.numeric").keyup(function(){
$val = $(this).val().match(/[0-9]/g).reverse().join("").match(/[0-9]{1,3}/g).join(",").match(/./g).reverse().join("");
$(this).val($val)
});
编辑2
作为将来的参考,如果有人想用小数位来实现这个,是的,我被迷住了:p
$("input:text.numeric").keyup(function(e){
if(e.which > 40 || e.which == 8) {
var num = $(this).val().match(/[0-9,]*/g)[0];
var decimalNum = $(this).val().match(/[.][0-9]*/) || "";
if(num) {
var wholeNum = num.match(/[0-9]/g).reverse().join("").match(/[0-9]{1,3}/g).join(",").match(/./g).reverse().join("");
var resultNum = wholeNum + decimalNum;
$(this).val(resultNum);
}
else
{
$(this).val(num);
}
}
});
这应该对你有用
<input type="text" class="numeric" />
编辑
对于普通的数字格式,代码有点不同。可能有一个很好的正则表达式用于此,但我的第一个想法是反转字符串并应用相同的技术。然后你再次反转字符串,就得到了它
$("input:text.numeric").keyup(function(){
$val = $(this).val().match(/[0-9]/g).reverse().join("").match(/[0-9]{1,3}/g).join(",").match(/./g).reverse().join("");
$(this).val($val)
});
编辑2
作为将来的参考,如果有人想用小数位来实现这个,是的,我被迷住了:p
$("input:text.numeric").keyup(function(e){
if(e.which > 40 || e.which == 8) {
var num = $(this).val().match(/[0-9,]*/g)[0];
var decimalNum = $(this).val().match(/[.][0-9]*/) || "";
if(num) {
var wholeNum = num.match(/[0-9]/g).reverse().join("").match(/[0-9]{1,3}/g).join(",").match(/./g).reverse().join("");
var resultNum = wholeNum + decimalNum;
$(this).val(resultNum);
}
else
{
$(this).val(num);
}
}
});
所以你想重新发明轮子;我强烈推荐使用插件,而不是自己发明。我强烈推荐使用jQuery而不是插件。。。你对它有更多的控制,在这种情况下,它非常容易。谁伤害了你,最好不要使用它。插件的大小更多的是由你自己编写代码。简单地说,插件并不总是解决方案。有时候从头开始写会更好,特别是如果它不是很复杂的话。好处包括更容易定制,代码更精简,等等,所以你想重新发明轮子;我强烈推荐使用插件,而不是自己发明。我强烈推荐使用jQuery而不是插件。。。你对它有更多的控制,在这种情况下,它非常容易。谁伤害了你,最好不要使用它。插件的大小更多的是由你自己编写代码。简单地说,插件并不总是解决方案。有时候从头开始写会更好,特别是如果它不是很复杂的话。好处包括更易于定制、代码更精简等。例如,问题中的示例,输出的是4565683985,而OP不希望这样。反转,然后调用,然后反转:P对不起,你完全正确,我的错。问题中的示例,输出的是4565683985,而OP不希望这样。反转,然后调用,然后反过来说:P对不起,你完全正确,我的错。你可以用keyup事件让它活起来。是的,那会管用的。但是我更喜欢你的——它短得多。@Abraham——谢谢。对于这个:45165874或4521243怎么样?正常的数字格式您可以使用keyup事件使其生效。是的,这会起作用。但是我更喜欢你的——它短得多。@Abraham——谢谢。对于这个:45165874或4521243怎么样?正常数字formatting@Joseph-谢谢。对于这个:45165874或4521243怎么样?正常数字formatting@NayantharaJudila啊!!普通数字格式。。。这是不同的,但并非不可能。我将发布一个修订版。@Joseph-谢谢。对于这个:45165874或4521243怎么样?正常数字formatting@NayantharaJudila啊!!普通数字格式。。。这是不同的,但并非不可能。我将发布一个修订版。告诉我们你试图做什么。告诉我们你试图做什么。