如何拒绝用户使用jquery在文本框中输入特殊字符?
special characters are like \ / ? * [ or ]
答案 0 :(得分:1)
我认为你只能使用javascript来实现这个目标
在文本框的KeyPress事件中调用以下函数
function AlphaNumericOnly(e,isAlphaonly)
{
// copyright 1999 Idocs, Inc. http://www.idocs.com
var key = [e.keyCode||e.which];
var keychar = String.fromCharCode([e.keyCode||e.which]);
keychar = keychar.toLowerCase();
if(isAlphaonly=='true')
checkString="abcdefghijklmnopqrstuvwxyz";
else
checkString="abcdefghijklmnopqrstuvwxyz0123456789";
if ((key==null) || (key==0) || (key==8) ||
(key==9) || (key==13) || (key==27) )
return true;
else if (((checkString).indexOf(keychar) > -1))
return true;
else
return false;
}
答案 1 :(得分:1)
使用jQuery:
$(function () {
//Add handler to input where the id ends with txtName
$("input[id$='txtUrl']").keypress(function (event) {
if (!IsUrlReady(event)) {
event.preventDefault();
}
});
});
function IsUrlReady(e) {
var key = [e.keyCode || e.which];
var keychar = String.fromCharCode([e.keyCode || e.which]).toLowerCase();
// 8 = backspace
// 9 = tab
//13 = enter key
//35 = end | #
//36 = home | $
//37 - (direction) left | %
//38 - (direction) up | &
//39 - (direction) right | '
//40 - (direction) down | (
if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27) || (key >= 35 && key <= 40)) {
var pattern = new RegExp("['#$%&\(]");
return !pattern.test(keychar);
} else {
var pattern = new RegExp("[A-Za-z0-9_-]");
return pattern.test(keychar);
}
}
答案 2 :(得分:0)
检查keydown
或keyup
事件处理程序中的密钥代码。
$('input').bind('keydown', function(e){
if(e.shiftKey){
switch(e.which){
case 55:{ // slash
return(false);
}
case 187:{ // *
return(false);
}
// and so forth
}
}
});
答案 3 :(得分:0)
就像@Reigel指出的那样,通过简单地粘贴内容就可以轻松地绕过键盘输入,所以我觉得你最好使用像jQuery Validation plugin这样的东西。
它具有吨功能,例如自定义验证规则,因此您可以根据自己的自定义规则(显然)进行验证。下面是一个示例,说明当监视字段的内容发生变化时(而不是等到表单提交之后),如何通过键入或粘贴来获取验证触发器:
$("#myTextField").change(function() {
if(!$(this).valid()) {
/* do something, show an alert, or whatever you need it to do */
}
});
我不会详细介绍如何使用这个插件,因为SO已经充满了例子,但我希望它能让你朝着正确的方向前进。