文本字段中只允许使用罗马字符
Allow only roman characters in text fields
我正在寻找一种方法,使网站中的所有文本框都只接受罗马字符。有什么简单的方法可以在全球范围内做到这一点吗。
提前谢谢。
在现代浏览器中,<input>
接受一个名为pattern
的属性。这允许限制给定字段中的有效字符。
input:invalid {
background-color:red;
}
<form>
<input type="text" pattern="[a-zA-Z's'.'-_]+" />
<button type="submit">Submit</button>
</form>
对于所有其他浏览器,您可以通过jQuery找到所有表单字段,检查是否存在pattern
-属性,并根据给定字段的值进行检查。您还可以替换不允许的字符:
$('form').on('keyup blur','input',function() {
if ($(this).val() && $(this).attr('pattern')) {
//var pattern = new RegExp('^'+$(this).attr('pattern')+'$', 'g');
//$(this).toggleClass('invalid', pattern.match(!$(this).val()));
var pattern = new RegExp($(this).attr('pattern').replace(/'[/,'[^'), 'g');
$(this).val($(this).val().replace(pattern,''));
}
});
input:invalid {
background-color:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<form>
<input type="text" pattern="[a-zA-Z's'.'-_]+" />
<button type="submit">Submit</button>
</form>
哦,您仍然希望在服务器端验证表单输入。所有HTML或Javascript的东西并不能阻止你网站的所有访问者提交损坏的东西。
对于过滤掉非罗马字符的正则表达式,我将参考以下问题的标记答案:
如何检测JS中的非罗马字符?
剧透:正则表达式是/[^'u0000-'u024F'u1E00-'u1EFF'u2C60-'u2C7F'uA720-'uA7FF]/g
现在,您只需要对jQuery:进行一点修改
var myInputId = "#foo"; // Or whatever you wish to use.
var input = $(myInputId);
var exp = /[^'u0000-'u024F'u1E00-'u1EFF'u2C60-'u2C7F'uA720-'uA7FF]/g;
input.blur(function() {
input.value = input.value.replace(exp, "");
});
将此片段包含到主页中,例如:
<script>
$(function(){
$('input[type=text],textarea').keypress(function(e){
var char = String.fromCharCode(e.which || e.charCode);
var rgx = /['u0000-'u007F]/;
if (rgx.test(char) == false)
return false;
})
})
</script>
这是我基于@fboes答案的想法。我还需要向用户显示出了什么问题,所以当在一行中键入几个禁用字符时,会显示错误消息,但没有冗余。
//I wanted first to assign pattern attr to every input in form but when it's happening, all "'" chars are removed from regex therefore - it doesn't work, so I had to add it in templates for every input.
let isIncorrect = false;
scope.checkPattern = function(e) {
// I don't want to allow Chineese, cyrylic chars but some other special - yes
var pattern = new RegExp('[a-zA-Z's'.'-_äÄöÖüÜßąćęłńóśźżĄĆĘŁŃÓŚŹŻ]+', "g");
if ($(e).is(':valid')){
return true
} else {
$(e).val($(e).val().replace(pattern,''));
return false
}
};
scope.removeAlert = function (e){
$(e).parent().find('.text-danger').remove();
isIncorrect = false;
}
// unallowed characters in order inputs
$('.my-form').on('keyup blur','input',function(e) {
if (!scope.checkPattern($(this))) {
if (!isIncorrect){
// show this error message but only once (!) and for specified period of time
$(this).parent().append('<p class="text-danger">Only latin characters allowed</p>');
isIncorrect = true;
}
setTimeout(scope.removeAlert, 3000, $(this));
}
});
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 如何使用jQuery自动打开页面上的所有链接
- 如何使用url加载程序在webpack中导入多个图像
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何使用jquery在填充自动完成的值后使文本框只读
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何使用WCF服务和javascript表单post上传.doc文件
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使用动画实现纸张推车
- 如何在Angular2中使用jQuery插件
- 使用Express捕获参数
- 使用clickToggle并在单击另一个元素时关闭元素
- 如何使用jQuery选择下拉列表的值
- 可以前端maven插件使用节点,npm已经安装
- 使用javascript将动态表从一个html页面打印到另一个html页
- 使用JS将数组转换为json对象
- 文本字段中只允许使用罗马字符