我需要在textarea中限制以下特殊字符<>{}
的使用。我正在使用这个用于jQuery的字母数字插件(https://github.com/KevinSheedy/jquery.alphanum)。
我的脚本如下:
$(document).on('keyup', '#ta_0', function(e){
blacklisted_characters = $('#ta_0').alphanum({ disallow : '<>{}' }); // Specify characters to disallow
if (blacklisted_characters) {
if (!!$.prototype.fancybox)
$.fancybox.open([
{
type: 'inline',
autoScale: true,
minHeight: 30,
content: '<p class="fancybox-error">' + 'Désolé, l\'utilisation de ce caractère n\'est pas autorisée.' + '</p>'
}],
{
padding: 0
});
else
alert('Désolé, l\'utilisation de ce caractère n\'est pas autorisée.');
};
});
如果在textarea中写入了这些特殊字符,则应显示弹出窗口。但我认为我的代码中存在错误,因为它阻止我在textarea中添加文本并且每次都弹出错误消息。
该插件仅适用于此:
$('#ta_0').alphanum({
disallow : '<>{}'
});
我做错了是if条件。我的textarea的id是$ta_0
。我只需要创建一个if条件,以确定是否在textarea <>{}
中写入了以下字符。如果这些字符写在textarea中,它应该激活错误弹出窗口。
非常感谢任何帮助。
谢谢
答案 0 :(得分:0)
函数:$('#ta_0').alphanum({ disallow : '<>{}' });
不会将输入字符作为值返回,它返回使用jQuery选择器选择的输入数组,在本例中为#ta_0
。由于这些输入存在于您的页面上,因此它将始终返回true,这会导致弹出窗口继续运行。
您必须通过几种方式重新构建代码。
$('#ta_0').alphanum({ disallow : '<>{}' });
移到关键字功能e
),以决定是否显示fancybox。 澄清第3步:使用keyup
看起来很难做到这一点,因为所有字符都需要 Shift 键作为修饰符。但是使用keypress
,您可以获得 Shift +键的唯一代码。
$(document).on("keypress", "#ta_0", function(event) {
blacklisted_characters = [
123, // {
125, // }
60, // <
62 // >
];
if (blacklisted_characters.indexOf(event.which) >= 0) {
alert("Désolé, l\'utilisation de ce caractère n\'est pas autorisée.");
}
});
我试图把它与alphanum插件结合起来,但是加载github用户内容似乎有问题。 But here you can see an example of the code above
答案 1 :(得分:0)
好吧,它不优雅,你必须稍微调整一下才能让它变得更好,但它能做到我认为你需要的东西:
$("#myText").on("keyup",function(event){
//console.log(event.which);
if(event.which == 219 || event.which == 221 || event.which == 188 || event.which == 190)
{
$("#myText").val($("#myText").val().replace(/<|>|{|}/gi,""));
}
});
希望它有所帮助。