0

我有一个使用 Angular Bootstrap 的 AngularJS 项目,并且我将Angular-xeditable库用于表中的一些就地编辑字段。

我的输入之一是“选择”输入,即允许用户选择一个选项的下拉列表。(可编辑 - 在 xeditable 中选择)。我试图在保存表单时强制输入此输入,但我找不到执行此操作的方法。与所有 x-editable 控件类似,我希望我可以简单地在标准 angular 指令中添加一个 e- 前缀,以将该指令应用于 xeditable 控件,也就是说,我应该能够添加 e-ng-required=" true" 到我的控制,使其成为强制性的。然而这不起作用。添加它时我没有收到任何错误,但它不会“做”任何事情。我仍然可以在不选择项目的情况下保存我的表单。

以下是我正在尝试做的代码示例:

<form editable-form name="tableform" onaftersave="saveSubmissions()" oncancel="cancel()">
    <table>
        <!--Define table headings and columns...-->
        <!--Define an ng-repeat to display each row-->
        <tr ng-repeat="currentRow in dataRows">
            <!--Add some columns for the row-->
            <!--Add the select/drop-down column pertaining to this question-->
            <td>
                <span editable-select="currentRow.vendorID" e-ng-options="x.vendorId as x.name for x in vendors" e-form="tableform" e-ng-required="true">
                    {{showVendor(currentRow)}}
                </span>
            </td>
            <!--Add some more columns for each row-->
        </tr>
    </table>
</form>

即使我在元素上设置了 e-ng-required="true",它什么也没做。如何使用 xeditable 强制选择项目?我已经搜索了示例,但找不到任何有用的东西。

4

1 回答 1

0

不幸的是 required 不适用于以下链接中所述的表单验证器

必填字段验证不起作用

使用带有 angular-xeditable 的标签“form”的验证字段表单

您必须在保存之前手动检查并设置输入的有效性并设置输入元素的有效性。

html

<span editable-select="currentRow.vendorID" e-ng-options="x.vendorId as x.name for x in vendors" e-form="tableform" e-name="vendor" onbeforesave="checkValidity()">
    {{showVendor(currentRow)}}
</span>

js

$scope.checkValidity = function(){
    if(valid){
        $scope.tableform.$setValidity("vendor", true);
    }
    else{
        $scope.tableform.$setValidity("vendor", false);
    }
}
于 2018-01-18T11:01:30.160 回答