非重复逗号

Non repeat comma

本文关键字:      更新时间:2023-09-26
<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);
相关文章:
  • 没有找到相关文章