我有一个字段,并希望在键入时显示用户时防止某些非法字符。 我如何在以下示例中执行此操作?
$('input').bind("change keyup", function() {
var val = $(this).attr("value");
/*
if (val --contains-- '"') {
$(this).css("background", "red");
val = val.replace('"', "");
$(this).attr("value", val)
}
*/
$("p").html(val);
});
编辑:我应该把非法字符放在一个数组
中var vowels = new Array('"', "<", ">", "&");
答案 0 :(得分:5)
尝试使用正则表达式。
$('input').bind("change keyup", function() {
var val = $(this).val();
var regex = /["<>&]/g;
if (val.match(regex)) {
$(this).css("background", "red");
val = val.replace(regex, "");
$(this).val(val);
}
$("p").html(val);
});
和FYI:您可以将.attr("value",val)
替换为.val(val)
,将.attr("value")
替换为.val()
<强>更新强>
如果要排除更多字符,可以将它们放入正则表达式中。如果要排除用于控制正则表达式的字符,则需要使用\
个字符来转义它们以控制正则表达式:[]()/\+{}?*+.^$
答案 1 :(得分:1)
试一试。但是没有数组。
$('input').bind("change keyup", function() {
var $th = $(this);
$th.val( $th.val().replace(/["<>&]/g, function(str) { return ''; } ) );
});
答案 2 :(得分:0)
您可以使用indexOf来确定字符串是否包含某个char ...
元音=数组('“',”&lt;“,”&gt;“,”&amp;“);
$('input').bind("change keyup", function()
{
var val = $(this).attr("value");
var illegal = '';
$(vowels).each(function()
{
if(val.indexOf(this)!=-1)
{
illegal= this;
break;
}
});
if(illegal != '')
{
$(this).css("background", "red");
val = val.replace(illegal, "");
$(this).attr("value", val)
}
});