我有以下jquery强制输入到输入框的字符为大写。
jQuery(document).ready(function() {
jQuery('.uppercase').keyup(function()
{
jQuery(this).val(jQuery(this).val().toUpperCase());
});
});
我想限制输入,以便只能输入英文字母数字字符。解决这个问题的最佳方法是什么?
答案 0 :(得分:0)
您可以使用regular expression将每个特殊字符替换为无效。
jQuery(document).ready(function() {
jQuery('.uppercase').keyup(function()
{
jQuery(this).val(jQuery(this).val().replace(/[^\w\s]/gi, '').toUpperCase());
});
});
您将通过常规explession指定的内容发送到void character('')。
在正则表达式中,您可以看到键 ^ ,表示不,键 \ w 表示字母数字字符< / em>和 \ s 表示空格字符。因此,您要发送的所有内容都不是字母数字,而不是空格。
如果您不想在您的字段中留出空格,请删除 RegEx 中的\。
PS。这不会阻止用户提交特殊字符,您必须检查服务器端。
等效但清洁正则的表达式可以是:
/\W/gi
您可以查看上面的链接,看看这意味着什么
答案 1 :(得分:0)
执行所需操作的一种非常简单的方法是捕获keydown
事件,然后检查密钥ASCII代码。如果它不在0x30
( ASCII'0')和0x39
( ASCII'9')之间且不在0x41
之间( ASCII'A')和0x7a
( ASCII'z'),然后您只需通过调用event.preventDefault
取消该事件。如果您将最后一次ASCII检查从较低'z'
(0x7a
)更改为较高'Z'
(0x5a
),则还可以通过键入小写字符来阻止用户。此外,您可以使用CSS text-transform: uppercase;
,这样用户就无法看到转换率较低和较高之间的转换。
jQuery('#test').on('keydown', function(e) {
var charCode = e.key.charCodeAt(0);
if (!((charCode >= 0x30 && charCode <= 0x39) || (charCode >= 0x41 && charCode <= 0x7a))) {
e.preventDefault();
}
});
jQuery('#test').on('keyup', function(e) {
jQuery(this).val(jQuery(this).val().toUpperCase());
});
input#test {
text-transform: uppercase;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="test">
如果您使用上限'Z'
(0x5a
)的第二个条件,则keyup
转换为上层事件调用是没有意义的,因为您将不会有任何较低的字符输入