当前位置: 代码迷 >> JavaScript >> Angular.js-在复选框上禁用ng并仍提交有效表格吗?
  详细解决方案

Angular.js-在复选框上禁用ng并仍提交有效表格吗?

热度:74   发布时间:2023-06-06 08:56:50.0

我正在使用angular.js并尝试在实际提交表单之前对其进行验证。 到目前为止,这是我的HTML:

<form name="form" class="css-form" novalidate>
    <table>
        <tr>
            <td>
                <input type="text" ng-model="branch.phone_number" name="uPhone" required="" />
                <br />
                <div ng-show="form.$submitted || form.uPhone.$touched">
                    <div ng-show="form.uPhone.$error.required">Insert phone number!</div>
                </div>
            </td>
        </tr>
        <tr>
            <td>
                <input type="checkbox" ng-model="branch.approved" ng-checked="branch.approved === 1" required="" ng-disabled="checkUser()" />
            </td>
        <tr/>
        <tr>
            <td align="right">
                <input type="button" ng-click="reset()" value="Reset" />
            </td>
        <tr/>
        <tr>
            <td align="left">
                <input type="submit" ng-click="form.$valid && save()" value="Save" />
            </td>
        </tr>
    </table>
</form>

这是我的checkUser函数:

    $scope.checkUser = function() {
        return (user.get().is_admin === 1) ? false : true;
    };

基本上,如果ng-model="branch.approved"不真实,则该表单将不允许提交。 如果我删除ng-disabled属性,则提交表单。

发生了什么事以及如何解决? 谢谢!

尝试这个:

使用ng-disabled="user.is_admin"然后在复选框上使用ng-change像这样ng-change="checkUser()"

将功能更改为

$scope.checkUser = function() {
    $scope.user = user.get();
};

我想用户的管理状态可以在表单生命周期中更改...否则,您不需要更改事件,只需使用ng-disabled="user.is_admin"并在控制器内部初始化用户对象

您的复选框是required -禁用控件后,它不会设置任何值。

input type="checkbox"删除required=""属性,它应该可以正常工作