我正在使用 angularJs(我是新手)来验证表单上的某些字段。这是我遇到问题的特定输入。
<input type="text" ng-required="!isWPPOnly" name="grades"
ng-class="{error:frmTestingDates.grades.$invalid}"
ng-model="date.grades" style="display:;"/>
如果我按下 1、2、3 之类的键,则会触发验证。但是,如果我在控制器中使用 javascript 设置该输入控件的值,例如
$("[name=grades]").val('1');
angularJs 不知道控件的值发生了变化。我猜它会监听 keydown 或 keyup 事件。
无论如何,设置值后如何从控制器手动触发该验证?
这是我单击按钮时在控制器中触发的代码
$scope.togglegrade = function (obj) {
var checkedGrades = [];
$("[name=grades]").val('');
$("input:checkbox[name=chkGrades]:checked").each(function()
{
checkedGrades.push($(this).val());
$("[name=grades]").val(checkedGrades);
});
};
我试过了,但它不起作用
$scope.togglegrade = function (obj) {
$scope.apply(function () {
alert(1);
var checkedGrades = [];
$("[name=grades]").val('');
$("input:checkbox[name=chkGrades]:checked").each(function()
{
checkedGrades.push($(this).val());
$("[name=grades]").val(checkedGrades);
});
});
};
您可以在此处查看完整的 html payment.html http://pastebin.com/9wesxaVd 完整的控制器 payment.js 在此处http://pastebin.com/1FWJKYyy
请注意,我已经将 payment.html 中的 ng-required="!isWPPOnly" 第 454 行注释了一段时间,直到我找到解决问题的方法。我需要提到的另一件事是,这个应用程序在它的控制器和整个应用程序的任何其他地方都没有 date.grades 的定义。它必须以某种方式自动生成