如何在 AngularJS 中创建和显示多个自定义指令
How to create and display multiple custom directives in AngularJS
我正在创建多个自定义指令来显示具有不同数据输入限制的文本框。显示后,我只想根据下拉框中的选择显示一个。我创建了至少两个自定义指令 - 一个用于仅允许数字的文本框,另一个仅允许字符。稍后我将为特殊字符和任何字符再添加两个。目前我在javascript中拥有onkeypress功能。有人可以帮我把它移动到 angularJS 吗?以下是我的代码。
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
</head>
<body>
<div ng-app="TextboxExample" ng-controller="ExampleController">
<form name="shippingForm" novalidate>
<number-only-input />
<br />
<text-only-input />
<br />
<select id="textBoxOptions" >
<option value="number" selected="selected">Numbers Only</option>
<option value="text">Text Only</option>
<option value="special">Special Characters</option>
<option value="any">Any Value</option>
</select>
</form>
</div>
<script>
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode != 46 && charCode > 31
&& (charCode < 48 || charCode > 57))
return false;
return true;
}
function isTextKey(evt) {
var charCode = (evt.which) ? evt.which : evt.keyCode;
if ((charCode > 90 || charCode < 97 )
&& (charCode < 65 || charCode > 122))
return false;
return true;
}
</script>
<script src="scripts/angular.js"></script>
<script src="scripts/jquery.min.js"></script>
<script>
$("select").change(function () {
var selected = $("#textBoxOptions").val();
$('#customTextBox').attr("ng-model", selected);
});
</script>
<script>
angular.module('TextboxExample', [])
.controller('ExampleController', ['$scope', function ($scope) {
$scope.testvalue = { number: 1, validity: true };
}])
.directive('numberOnlyInput', function () {
return {
restrict: 'E',
template: '<INPUT id="numChar" onkeypress="return isNumberKey(event)" type="text" name="txtChar">',
};
})
.directive('textOnlyInput', function () {
return {
restrict: 'E',
template: '<INPUT id="txtChar" onkeypress="return isTextKey(event)" type="text" name="txtChar">',
};
});
</script>
</body>
</html>
以下是Chris建议的代码:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
</head>
<body>
<div ng-app="TextboxExample" ng-controller="ExampleController">
<form name="shippingForm" novalidate>
<number-only-input ng-if="optionValue=='number'"/>
<br />
<text-only-input ng-if="optionValue=='text'"/>
<br />
<select id="textBoxOptions" ng-model="optionValue">
<option value="number" selected="selected">Numbers Only</option>
<option value="text">Text Only</option>
<option value="special">Special Characters</option>
<option value="any">Any Value</option>
</select>
</form>
</div>
<script>
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode != 46 && charCode > 31
&& (charCode < 48 || charCode > 57))
return false;
return true;
}
function isTextKey(evt) {
var charCode = (evt.which) ? evt.which : evt.keyCode;
if ((charCode > 90 || charCode < 97 )
&& (charCode < 65 || charCode > 122))
return false;
return true;
}
</script>
<script src="scripts/angular.js"></script>
<script src="scripts/jquery.min.js"></script>
<script>
angular.module('TextboxExample', [])
.controller('ExampleController', ['$scope', function ($scope) {
$scope.optionValue = 'number';
$scope.testvalue = { number: 1, validity: true };
}])
.directive('numberOnlyInput', function () {
return {
restrict: 'E',
template: '<INPUT id="numChar" onkeypress="return isNumberKey(event)" type="text" name="txtChar">',
};
})
.directive('textOnlyInput', function () {
return {
restrict: 'E',
template: '<INPUT id="txtChar" onkeypress="return isTextKey(event)" type="text" name="txtChar">',
};
});
</script>
</body>
</html>
相关文章:
- 如何在用户按下F5键或单击浏览器时显示自定义的fancybox's后退/关闭按钮
- 如何在html中以角度显示自定义指令的作用域
- 使用Plaid Link显示自定义用户名和密码模式对话框
- 根据屏幕分辨率显示自定义背景图像
- 登录时显示自定义错误消息
- 如何在具有多边形的同一地图上显示自定义标记
- 如何在javascript中使画布显示自定义图像作为背景
- Chrome扩展-在全屏视频顶部显示自定义通知/弹出窗口(HTML元素)
- 根据 IP 向 Web 访问者显示自定义消息
- 如何使用人力车库在折线图上显示自定义工具提示
- 无法显示自定义对话框
- 使用相对文件路径在 Google 地图中显示自定义标记
- 如何在移动浏览器的屏幕顶部显示自定义警报
- Wavesurfer.js:如何显示自定义标记
- 在谷歌地图中按类型显示自定义图像标记图标
- 如何在检测到浏览器关闭事件时显示自定义弹出窗口
- 通过jQuery在Html.ValidationMessageFor中显示自定义错误
- 自定义HTML5表单验证最初未显示自定义错误
- 在剑道装载指示器上显示自定义文本
- 如何在jqGrid中隐藏和显示自定义按钮通过使用"reccount”;