正则表达式不允许使用重音字符



我希望用户只能输入英文字符,下面的代码有效,但在 Mac 上,如果您按住字母"a",例如您可以插入重音字符,例如"á"。我已经尝试了几种不同的方法,包括键下、键升等,但即使在释放键时,它也认为输入的值是"A",所以它通过了正则表达式。有人知道出了什么问题或更好的方法来做到这一点吗?

$('.monogram-letters').on("keypress", function(e) {
var englishAlphabet = /[A-Za-z]/g;
var key = String.fromCharCode(e.which);
if (englishAlphabet.test(key)) {
console.log('true');
return true;
} else {
console.log('false');
}
return false;
});
$('.monogram-letters').on("paste", function(e) {
e.preventDefault();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" value="" class="monogram-letters valid" maxlength="3" id="options-41-container" name="options[41]" data-category="41" data-val="type your letters (up to 3)" required="" aria-required="true" aria-invalid="false">

您可以指示输入文本仅接受英文字符:

<input pattern="[a-z]" />

显然,您还需要验证服务器端。

我最终选择的解决方案是检查最终字符串,然后清空输入(如果它有重音字符(

var $monogramInput = $('.monogram-letters');
var englishAlphabet = /^[a-z]+$/i;
$monogramInput.on("keypress", function(e) {
var key = String.fromCharCode(e.which);
if(englishAlphabet.test(key)) {
return true;
}
return false;
}).blur(function() {
var enteredValue = $(this).val();
if(!enteredValue.match(englishAlphabet)) {
$(this).val('');
}
});

相关内容

最新更新