不能对一个元素使用两个.replace()

时间:2013-09-02 14:01:22

标签: jquery

我有一个jquery代码来将输入的第一个字母大写到一个文本框中,我有另一个代码禁止将数字输入到同一个文本框中。

问题是,如果我使用一个,另一个不起作用,我希望有人可以告诉我如何将它们与一个.replace()组合在一起{
1} 我使用以下代码来大写第一个字母输入:

$(this).val(txt.replace(/^(.)|\s(.)/g, function($1){ return $1.toUpperCase( ); }));

我使用此代码禁止在文本框中输入数字:

$(this).val($(this).val().replace(/[^a-z]/g,''));


谢谢!

2 个答案:

答案 0 :(得分:1)

尝试将代码移动到两个函数中,每个函数接受一个字符串并返回一个字符串。现在您可以按任意顺序组合这两个:

$(this).val(disallowNumbers(capitalize($(this).val())));

[退出] 我在这里修了小提琴:http://jsfiddle.net/DnMN3/1/

原始代码存在问题:通过仅允许“禁止数字”检查中的小写字母,吞噬了大写字母。因此,代码将a替换为A,然后不再允许这样做。

答案 1 :(得分:0)

只是把两个推到一起?我不知道问题是什么?

$(this).val($(this).val().replace(/[^a-z]/g,'').replace(/^(.)|\s(.)/g, function($1){ return $1.toUpperCase( ); }));
//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^