![](/img/trans.png)
[英]How to make this code more useful (preventing special characters in textarea)
[英]javascript preventing special characters in a textarea
我需要限制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中添加文本并每次都弹出错误消息。
该插件仅与此兼容:
$('#ta_0').alphanum({
disallow : '<>{}'
});
这是如果我做错了的条件。 我的textarea的id是$ta_0
。我只需要设置一个if条件,以便确定是否在textarea <>{}
中写入了以下字符。 如果这些字符写在textarea中,它将触发错误弹出窗口。
任何帮助将不胜感激。
谢谢
函数: $('#ta_0').alphanum({ disallow : '<>{}' });
不返回输入字符作为值,它返回使用jQuery选择器选择的输入数组,在本例中为#ta_0
。 由于这些输入存在于您的页面上,因此它将始终返回true,这将导致弹出窗口继续运行。
您将不得不以几种方式重组代码。
$('#ta_0').alphanum({ disallow : '<>{}' });
按键功能之外 e
),以决定是否显示fancybox。 要澄清第3步:使用keyup
似乎很难做到这一点,因为所有字符都需要Shift键作为修饰符。 但是使用keypress
,您会获得Shift + key的唯一代码。
$(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用户内容似乎有问题。 但是在这里您可以看到上面的代码示例
好的,它并不优雅,您必须对其进行一些调整以使其更好,但是它确实满足了您的需求:
$("#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,""));
}
});
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.