Jquery Can';t对一个元素使用两个.replace()

Jquery Can';t对一个元素使用两个.replace(),jquery,Jquery,我有一个jquery代码将输入到文本框中的第一个字母大写,还有另一个代码不允许将数字输入到同一文本框中。 问题是,如果我使用一个,另一个就不起作用了,我希望有人能告诉我如何将这两个功能与一个.replace() 我使用以下代码将输入的第一个字母大写: $(this).val(txt.replace(/^(.)|\s(.)/g, function($1){ return $1.toUpperCase( ); })); 我使用此代码禁止文本框中的数字: $(this).val($(this).va

我有一个jquery代码将输入到文本框中的第一个字母大写,还有另一个代码不允许将数字输入到同一文本框中。

问题是,如果我使用一个,另一个就不起作用了,我希望有人能告诉我如何将这两个功能与一个
.replace()


我使用以下代码将输入的第一个字母大写:

$(this).val(txt.replace(/^(.)|\s(.)/g, function($1){ return $1.toUpperCase( ); }));
我使用此代码禁止文本框中的数字:

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



谢谢

就把这两个推到一起?我看不出有什么问题

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

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

$(this).val(disallowNumbers(capitalize($(this).val())));
[退出]我在这里修复了小提琴:


原始代码有一个问题:在“不允许数字”检查中只允许小写字母,大写字母被吞并。因此,代码将
a
替换为
a
,这在当时是不允许的。

您是否尝试将这两个调用链接到
replace()
?Offtopic:您可以将regexp的大小写简化为
/\b[a-z]/gi
\b
表示单词边界,因此它将匹配字符串的开头或单词的前面。这是一个不错的解决方案,但可能应该是另一个顺序。因此,在删除开头不允许的数字后,它会将单词大写。@surfsup:你能提供一个不起作用的小提琴吗?这样我就可以修复它了?当我使用这个代码时,我不能输入多个字符,也不能输入大写字母。