在这里,我已阻止在我的移动浏览器中为所有输入类型键入特殊字符。 但它将允许所有字母和数字。
我的要求是允许用户只为特定字段键入 / (正斜杠)(例如:日期字段)。
有可能以简单的方式吗?
除了为我需要的特定字段/(正斜杠)之外的所有输入类型分配类名?
$(document).on('keypress','input', function(event){
var regex = new RegExp("^[a-zA-Z0-9]+$");
var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
if (!regex.test(key)) {
event.preventDefault();
return false;
}
});
注意:我需要允许对特定类进行正斜杠而不是执行所有输入字段。
简单:我需要为期望特定类的所有输入字段阻止特殊字符(让我们说)
我没有要求具有相同正则表达式功能的解决方案。我需要单独的点击事件,只允许特定类的斜杠' someclassname'
答案 0 :(得分:2)
您可以将/添加到正则表达式中,如下代码所示:
td
答案 1 :(得分:1)
您可以使用函数is
检查焦点输入是否具有日期输入类或其类型是日期。然后,您可以将另一个regexp
与之前的表达式合并。代码:
$(document).on('keypress','input', function(event){
var regex = new RegExp("^[a-zA-Z0-9]+$");
if($("input:focused").is(".classname"))
{
regex = new RegExp(regex.source + "|\/");
}
var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
if (!regex.test(key)) {
event.preventDefault();
return false;
}
});
P.S。我不是100%肯定2个正则表达式的组合代码,只是由内存写的。如果不起作用,您可以简单地添加另一个检查,如果字符串等于/
。
答案 2 :(得分:1)
要在两个正则表达式之间切换,我会使用它:
var regex = $(this).data('date') ? /^[a-zA-Z0-9\/]+$/ : /^[a-zA-Z0-9]+$/;
将data-date
添加到日期输入中,例如:
<input data-date placeholder="I allow slashes" />
<input placeholder="No slashes here" />