【问题标题】:Radio buttons ng-required checkbox like单选按钮 ng-required 复选框,例如
【发布时间】:2016-12-06 10:59:24
【问题描述】:

我的表单中的一些单选按钮有点问题。我知道复选框可以以非常简单的方式做到这一点,但你知道,客户要求这样做。

所以,这是表单部分:

<label>
    <span>Acconsento*</span>
    <input type="radio" name="privacy_1" value="1" ng-model="ctrl.utente.privacy_1" ng-required="!ctrl.isValidPrivacy()"/>
</label>
<label>
    <span>Non acconsento</span>
    <input type="radio" name="privacy_1" value="0" ng-model="ctrl.utente.privacy_1"/>
</label>

各自的JS部分:

self.isValidPrivacy = function () {
    return (!self.utente.privacy_1 || self.utente.privacy_1 == 0) ? false : true;
};

并且ctrl.utente.privacy_1 必须是== 1

尝试后ng-required="ctrl.utente.privacy_1 != 1"
ng-required="!ctrl.utente.privacy_1(从第二个无线电输入中删除value="0")我仍然没有找到实现此目的的方法。

ctrl.utente.privacy_1 == 0不显示为验证错误,默认无法选中(ctrl.utente.privacy_1默认不能为false

StackOverflow 上的所有其他答案都不能解决我的问题

【问题讨论】:

    标签: javascript angularjs forms ng-required


    【解决方案1】:

    嗯,我认为你有一些混乱的概念......

    首先,您不需要三元运算符来辨别真假,只需返回比较的结果即可:

    return (!self.utente.privacy_1 || self.utente.privacy_1 == 0);
    

    就够了。也就是说,你甚至不需要一个函数来检查这个,你可以直接在属性上做,因为它是一个简单的检查:

    <... ng-required="!$ctrl.utente.privacy_1 || $ctrl.utente.privacy_1 == 0" .../>
    

    也就是说,我完全不明白你为什么需要一个 ng-required,也许你误解了它的含义...... ng-required 它用于强制用户为输入字段赋值,不是为了检查它的价值,这似乎是你想要做的。如果您想确保用户选择了两个选项之一,只需在两个输入上使用 html 属性“必需”,这就足够了。

    <label>
        <span>Acconsento*</span>
        <input type="radio" name="privacy_1" value="1" ng-model="ctrl.utente.privacy_1" required />
    </label>
    <label>
        <span>Non acconsento</span>
        <input type="radio" name="privacy_1" value="0" ng-model="ctrl.utente.privacy_1" required />
    </label>
    

    【讨论】:

    • 在我提出问题之后,我实际上已经像你一样简化了我的功能。顺便说一句,我已经尝试过你的 ng-required 子句,但这不起作用,因为我需要该值为 1,而不是 0 或 false
    • 我没有使用过 ng-required,只是需要,只是为了强制用户为 ctrl.utente.privacy_1 模型设置一个值。一个提示:如果您使用带有默认表示法的 controllerAs 语法,那么 'ctrl' 应该是 '$ctrl' ,这可能会让您头疼......我很确定我的答案是正确的!
    • 我需要该值为 1,如果我将 required 放在每个值上,它也会接受 0 作为值。无论如何,我已经解决了从第二个选项中删除 ng-model
    • 你一直很困惑...必需的属性强制“有效值之一”必须分配给该字段,它不会强制将这些值中的任何一个应用于模型。如果您真的不希望将值 0 分配给模型,只需从输入中删除 ng-model 并在控制器上分配 utente.privacy_1 ,但正如我之前所说,您将拥有一个没有意义的无线电组,因为它没有设置任何东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 2011-09-09
    • 2010-10-27
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多