我已经创建了一个JSfiddle我遇到的问题:
http://jsfiddle.net/9qxFK/4/
我有一个输入字段,我只想允许小写字母,数字和连字符(此字段将用于URL).
$scope.auto_slug = function() { $scope.slug = $scope.slug.toLowerCase().replace(/[^a-z0-9\-\s]/g,'').replace(/\s+/g,'-'); };
只有在无效字符后键入有效字符时才会删除无效字符.
任何人都可以告诉我为什么这不起作用?
谢谢,斯科特
解决方法
而不是在控制器上执行此操作,您应该使用这样的指令:
app.directive('restrict',function($parse) { return { restrict: 'A',require: 'ngModel',link: function(scope,iElement,iAttrs,controller) { scope.$watch(iAttrs.ngModel,function(value) { if (!value) { return; } $parse(iAttrs.ngModel).assign(scope,value.toLowerCase().replace(new RegExp(iAttrs.restrict,'g'),'-')); }); } } });
然后在你的输入上使用它,如下所示:
<input restrict="[^a-z0-9\-\s]" data-ng-model="slug" ...>
原文地址:https://www.jb51.cc/js/159527.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。