使用jQuery替换字符

Abe*_*ler 4 jquery

我正在尝试从keyup上的所有文本框中删除逗号.我想出了下面的脚本,但它没有用.谁能看到我做错了什么?

<script>
    $("input[type='text']").keyup
    (
        function () 
        {
            alert('1');
            $(this).val($(this).val().replace(/[,]/g, ""));
        }
    );
</script>
Run Code Online (Sandbox Code Playgroud)

注意:请原谅$ in Script.所以不会让我发布它,否则......

jes*_*vin 13

您可能希望将整个代码块包装在文档就绪函数中

$(function() {
  $("input:text").keyup(function() {
        $(this).val($(this).val().replace(/[,]/g, ""));
  });
});
Run Code Online (Sandbox Code Playgroud)

您可以在jQuery文档站点上阅读所有相关内容.


And*_*y E 6

正如其他人提到的那样,请确保使用$(document).ready() - http://api.jquery.com/ready/.另外,不要替换keyup上的逗号,你应该通过返回false来禁止它们在keypress上:

$(document.ready(function () { 
    $("input[type=text]").keypress(function (evt) {
        if (String.fromCharCode(evt.which) == ",")
            return false;
    });
});
Run Code Online (Sandbox Code Playgroud)

示例:http://jsfiddle.net/QshDd/

这提供了更专业的感觉,","被阻止而不会出现,然后在您释放密钥时消失.但是,与您的解决方案一样,这不会捕获复制并将逗号粘贴到您的输入中.为此,您可以挂钩onpasteonchange事件.

如果你想坚持使用keyup和replace,你真的不需要乱用jQuery包装,你可以直接访问value属性:

$(document.ready(function () { 
    $("input[type=text]").keyup(function (evt) {
        this.value = this.value.replace(/,/g, "");
    });
});
Run Code Online (Sandbox Code Playgroud)

  • +1是唯一的答案,实际上让OP更好地做他正在尝试做的事情而不只是说"换入`$(document).ready()`." (2认同)