尝试提交时,我可以将所有字段设置为“脏”吗?

时间:2014-04-01 17:03:42

标签: javascript angularjs

我有一个适用于所有脏字段和无效字段的CSS类:

input.ng-dirty.ng-invalid, select.ng-dirty.ng-invalid, textarea.ng-dirty.ng-invalid{
    border: 1px solid red;
}

然而,在提交时,我希望出现红色边框(以及我添加的其他任何内容)。

有没有办法让提交时所有字段变脏?或者将类应用于表格,例如" ng-formsubmitted" (或者什么)?

3 个答案:

答案 0 :(得分:2)

您可以在提交时将表单设置为脏,然后在css选择器中使用它而不是单个元素。

<button ng-click="formName.$setDirty();doWhatever();">Save</button>

或在您的表单上,具体取决于您的设置方式:

<form name="formName" ng-submit="formName.$setDirty()">

http://docs.angularjs.org/api/ng/type/form.FormController

然后你的css选择器将是

.ng-dirty .ng-invalid {
    ...
}

答案 1 :(得分:0)

您可以在表单提交处理程序中添加类似的内容......

$('input').addClass("ng-dirty");
$('select').addClass("ng-dirty");
$('textarea').addClass("ng-dirty");

此代码基本上是将类ng-dirty添加到所有表单字段中。

或者,如果你需要两个班级......

$('input').addClass("ng-dirty").addClass("ng-invalid");
$('select').addClass("ng-dirty").addClass("ng-invalid");
$('textarea').addClass("ng-dirty").addClass("ng-invalid");

AND ,正如下面的评论所指出的那样(感谢Ingo)......这三行可以合并为一行,如下所示:

$('input, select, textarea').addClass("ng-dirty").addClass("ng-invalid");

答案 2 :(得分:0)

当用户点击提交按钮时,您可以将表单设置为脏。

来自FormController

的angularjs文档
$setDirty();
     

将表单设置为脏状态。

     

可以调用此方法来添加&#39; ng-dirty&#39; class并将表单设置为脏状态(ng-&gt;脏类)。此方法也将传播到父表单。