0

在尝试避免设置默认选定值的同时,我尝试了几个不同的选项。

选项1

<div class="control-group">
    <h4>Text</h4>
    <div class="controls">
        <div hidden="hidden" >@Html.EditorFor(m => m.pc.PS1)</div>                            
        <div class="btn-group" data-toggle-name="pc.PS1" data-toggle="buttons-radio">
        <button type="button" value="11" class="btn@((Model.pc.PS1 == 11) ? " active" : string.Empty )" data-toggle="button">Yes</button>
        <button type="button" value="12" class="btn@((Model.pc.PS1 == 12) ? " active" : string.Empty )" data-toggle="button">No</button>
        <button type="button" value="13" class="btn@((Model.pc.PS1 == 13) ? " active" : string.Empty )" data-toggle="button">N/A</button>
    </div>
    @Html.ValidationMessageFor(model => model.pc.PS1)
</div>

选项 2

<div class="control-group">
     <h4>Text</h4>
     <div class="controls">
         @Html.HiddenFor(m => m.pc.F1FallsRiskAssessmentFRASE)
         <div class="btn-group" data-toggle-name="pc.PS2" data-toggle="buttons-radio">
         <button type="button" value="11" class="btn@((Model.pc.PS2== 11) ? " active" : string.Empty )" data-toggle="button">Yes</button>
         <button type="button" value="12" class="btn@((Model.pc.PS2== 12) ? " active" : string.Empty )" data-toggle="button">No</button>
         <button type="button" value="13" class="btn@((Model.pc.PS2== 13) ? " active" : string.Empty )" data-toggle="button">N/A</button>
         </div>
         @Html.ValidationMessageFor(model => model.pc.PS2)
      </div>
</div>

$('#ctFRM').validate({
            rules: {
                "pc.PS1": { required: true, minlength: 2 },
                "pc_PS2": { required: true, minlength: 2 },

页面上隐藏的 ID 是 pc_PS2 但名称是 pc.PS2 使用 firebug 脚本选项卡并在其上放置一个断点显示默认值为 0 当验证为 pc_PS2 但没有验证消息时不管“。” 或者 ”_”。

它们确实适用于使用“。”的文本框输入。在验证规则和“_”中设置掩码。

我曾尝试在单选按钮上使用所需的验证,每个按钮的值都为 1/2/3,但由于页面默认隐藏的值为 0,因此它不会触发所需的真实验证。

接下来,我尝试将选项值设置为 11/12/13,因此它们的长度为 2,因此我可以使用 minlength 2 来防止提交,但这在更改之前不会生效。

因此,我留下了不显眼的验证的备份选项,或者为每个问题的每个按钮设置一个 onclick,以期获得正常的字符串需要验证以处理另一组隐藏值。

有什么想法或解决方案吗?

4

1 回答 1

1

为了验证任何隐藏字段,您必须ignore按如下方式设置选项。

$('#ctFRM').validate({
    // options and rules,
    ignore: []
});

有关更多信息,请参见: https ://stackoverflow.com/a/8565769/594235

于 2013-03-04T15:22:28.470 回答