【发布时间】:2016-07-18 03:31:57
【问题描述】:
我正在详细学习 angularJs 指令。目前我正在使用它来限制用户不输入特殊字符。
这里是代码
HTML
<input type="text" no-special-char ng-model="vm.customTag" class="form-control" value="" />
AngularJS 指令
app.directive('noSpecialChar', function () {
return {
require: 'ngModel',
restrict: 'A',
link: function (scope, element, attrs, modelCtrl) {
modelCtrl.$parsers.push(function (inputValue) {
if (inputValue == null)
return ''
cleanInputValue = inputValue.replace(/[^\w\s]/gi, '');
if (cleanInputValue != inputValue) {
modelCtrl.$setViewValue(cleanInputValue);
modelCtrl.$render();
}
return cleanInputValue;
});
}
}
});
这里有两件我想要的东西
(1) 用户可以输入减号/破折号'-',这现在没有发生,我如何更改我的/[^\w\s]/gi,它也允许用户输入-(破折号/减号)符号。
(2) 上面的功能只限制用户不能输入任何特殊字符,但是当用户输入特殊字符时我也想显示红色警告“不允许输入特殊字符” ,我该怎么做??
感谢任何帮助!!!
谢谢
【问题讨论】:
-
但替换代码应该删除所有特殊字符。解释特殊字符下的字符。
-
我不想让用户输入~!@#$%^&*(){}[]?/+=,*`,应该是字母数字+减号(-)+ _(下划线)符号允许
-
查看角度表单验证。我建议将输入标记为无效并让表单验证处理显示错误。此外,我不建议更改用户输入的内容,最好告诉他们他们做错了什么,而不是神奇地改变他们所做的事情。
-
1)
/[^\w\s-]/gi。 2)使用额外的检查,如if (/[^\w\s-]/.test(inputValue)) { /* Show the error in some control */ }。
标签: javascript angularjs regex angularjs-directive special-characters