dev*_*ler 45
<input name="lorem" onkeyup="this.value=this.value.replace(/[^a-z]/g,'');">
Run Code Online (Sandbox Code Playgroud)
并且onblur对于喜欢粘贴而不是键入的邪恶用户可以是相同的;)
[+]漂亮的jQuery代码:
<input name="lorem" class="alphaonly">
<script type="text/javascript">
$('.alphaonly').bind('keyup blur',function(){
var node = $(this);
node.val(node.val().replace(/[^a-z]/g,'') ); }
);
</script>
Run Code Online (Sandbox Code Playgroud)
ryb*_*111 26
接受的答案可能很短,但它存在严重缺陷(请参阅此小提琴):
以下内容创建了一个密钥代码数组(白名单).如果按下的键不在数组中,则忽略输入(请参阅此小提琴):
$(".alpha-only").on("keydown", function(event){
// Allow controls such as backspace, tab etc.
var arr = [8,9,16,17,20,35,36,37,38,39,40,45,46];
// Allow letters
for(var i = 65; i <= 90; i++){
arr.push(i);
}
// Prevent default if not in array
if(jQuery.inArray(event.which, arr) === -1){
event.preventDefault();
}
});
Run Code Online (Sandbox Code Playgroud)
请注意,这允许使用大写和小写字母.
我已经包含了退格键,删除键和箭头键等密钥代码.您可以从此密钥代码列表中创建自己的白名单数组,以满足您的需求.
当然,用户仍然可以粘贴非字母(例如通过CTRL+ V或右键单击),因此我们仍然需要监控所有更改,.on("input"...但replace() 仅在必要时:
$(".alpha-only").on("input", function(){
var regexp = /[^a-zA-Z]/g;
if($(this).val().match(regexp)){
$(this).val( $(this).val().replace(regexp,'') );
}
});
Run Code Online (Sandbox Code Playgroud)
这意味着我们仍然会有光标跳到最后的不良影响,但仅限于用户粘贴非字母时.
某些触摸屏键盘将尽其所能在用户认为必要时自动更正用户.令人惊讶地,这甚至可以包括输入,其中autocomplete和autocorrect,甚至spellcheck是关闭.
为了解决这个问题,我建议使用type="url",因为URL可以接受大写和小写字母,但不会自动更正.然后,为了绕过尝试验证URL的浏览器,您必须novalidate在form标记中使用.
要仅允许使用小写字母,preventDefault如果键代码不在"a","z"范围内,则调用事件对象.如果允许大写,请检查65..90或'A'..'Z'.
或者,或者使用许多输入掩码插件中的一个.
见例子.
?$(<selector>).keypress(function(e) {
if(e.which < 97 /* a */ || e.which > 122 /* z */) {
e.preventDefault();
}
});?????
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
85672 次 |
| 最近记录: |