<input type="text" class="dot"> <br />
<input type="text" class="dot"> <br />
<input type="text" class="dot"> <br />
$('.dot').keydown(function(){
$(this).val($(this).val().toString().replace(/\./g, ','));
})
在此示例中,我将dot替换为逗号。如何在当前输入中阻止添加两个逗号?
如果在输入中已经是一个逗号,那么接下来应该删除。
答案 0 :(得分:4)
这是尝试用正则表达式解决问题的经典案例,现在你有两个问题......
目前尚不清楚你想要什么,但这会停止多次按下逗号键。从这里开始检测周期(代码190)应该是一小段步骤,而是用它来做任何你想做的事。
$('.dot').keydown(function(e){
if (e.which == 188) {
if (this.value.indexOf(',') != -1) {
e.preventDefault();
return false;
}
}
});
答案 1 :(得分:2)
使用keypress
事件代替keydown
事件(因为密钥重复不会触发keydown
)。
查找.
和,
个字符,如果文本中已有逗号,则返回false
来停止该事件。
由于事件是可停止的,它会在值更改之前发生,因此您需要使用超时来用逗号替换句点。
$('.dot').keypress(function(e){
var txt = $(this).val();
if (e.which == 46) {
if (txt.indexOf(',') != -1) {
return false;
} else {
var t = $(this);
window.setTimeout(function(){
t.val(t.val().replace('.', ','));
}, 0);
}
} else if (e.which == 44) {
return txt.indexOf(',') == -1;
}
});
答案 2 :(得分:1)
$('.dot').keypress(function(e){
if( ($(this).val().indexOf(',') != -1 || $(this).val().indexOf('.') != -1) &&
(e.charCode==','.charCodeAt(0) || e.charCode=='.'.charCodeAt(0)) )
e.preventDefault();
else
$(this).val($(this).val().toString().replace(/\./g, ','));
});
答案 3 :(得分:0)
如果我理解你想要什么,这是一种方法:
var myVal = $(this).val();
myVal[myVal.indexOf(",")] = ".";
myVal.split(",").join("");
$(this).val(myVal);