app.directive('allowPattern', [allowPatternDirective]);
function allowPatternDirective() {
return {
restrict: "A",
compile: function (tElement, tAttrs) {
return function (scope, element, attrs) {
element.bind("keypress", function (event) {
var keyCode = event.which || event.keyCode;
if ((keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122)) {
event.preventDefault();
return false;
}
});
};
}
};
}
&#13;
<input type="text" allow-pattern="[0-9]" autofocus />
&#13;
当粘贴内容不适用于该字段时,如何防止在文本框中粘贴? (它应粘贴适用的内容)
应用背景:C#,AngularJS
我的应用程序中有一个文本框,只能接受数字。目前我正在使用Keypress的指令,它阻止输入非数字值。但是当我将非数字值与数值(Ex:NUMBER123)一起复制粘贴时,它就会被粘贴。但要求是它根本不应该粘贴。我怎样才能通过适当的角度js指令/ jquery实现这一点。
答案 0 :(得分:0)
这是您的要求。
var app = angular.module('app', []);
app.directive('allowNumbers', function() {
return {
require: 'ngModel',
link: function (scope, element, attr, ngModelCtrl) {
function test(text) {
var input = text.replace(/[^0-9]/g, '');
if(input !== text) {
ngModelCtrl.$setViewValue("");
ngModelCtrl.$render();
}
return input;
}
ngModelCtrl.$parsers.push(test);
}
};
});
app.controller('MainCtrl', function($scope) {
});
<html ng-app="app">
<head lang="en">
<meta charset="utf-8">
<title>Directive</title>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
<input allow-numbers type="text" ng-model="test" autofocus>
</body>
</html>
请运行此代码段
答案 1 :(得分:0)
<script type="text/javascript">
function onlyNos(e, t)
{
try
{
if (window.event)
{
var charCode = window.event.keyCode;
}
else if (e)
{
var charCode = e.which;
}
else
{
return true;
}
if (charCode > 31 && (charCode < 48 || charCode > 57))
{
return false;
}
return true;
}
catch (err)
{
alert(err.Description);
}
}
</script>
在你的头部尝试这个,你的文本框应该是这样的。