非重复逗号
Non repeat comma
<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, ','));
})
http://jsfiddle.net/ZtkBW/
在这个例子中,我将点替换为逗号。如何阻止在电流输入中添加两个逗号?
如果输入中已经是一个逗号,则应删除下一个逗号。
这是一个尝试用正则表达式解决问题的经典案例,现在你有两个问题......
目前尚不清楚您想要什么,但这将停止多次按下逗号键。从这里开始应该是一个短步骤来检测周期(代码 190)并用它做任何你想做的事情。
$('.dot').keydown(function(e){
if (e.which == 188) {
if (this.value.indexOf(',') != -1) {
e.preventDefault();
return false;
}
}
});
使用 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;
}
});
演示:http://jsfiddle.net/eAkUc/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, ','));
});
演示
如果我正确理解您想要什么,这里有一种方法可以做到这一点:
var myVal = $(this).val();
myVal[myVal.indexOf(",")] = ".";
myVal.split(",").join("");
$(this).val(myVal);
相关文章:
- 没有找到相关文章