【发布时间】:2013-02-16 05:43:58
【问题描述】:
我尝试了几个不同的选项,同时试图避免设置默认选定值。
选项 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 的备份选项,以期获得正常字符串所需的验证以处理另一组隐藏值。
有什么想法或解决方案吗?
【问题讨论】:
-
显示渲染的 HTML 代码。其次,在
.validate()内部声明规则时,只能使用name属性。第三,如果不设置选项ignore: [],您将无法验证隐藏字段。最后,您说得通了,我几乎无法理解您要告诉我们什么……您的问题/问题到底是什么? -
@Sparky 我试图展示我尝试过的所有不同解决方案,以防万一 1 被破坏但正确的 1 使用或至少表明我已经尝试了所有我能想到的并且没有运气,无论如何,我的观点是使用 name 属性不会在浏览器中获得值,但 Id 会。我在这篇文章中的观点是,我想验证使用 int 值的引导单选按钮,我现在将测试忽略选项,看看它是如何反应的。
-
@Sparky 将忽略选项修复它,所以如果你把它作为一个答案,我会勾选它正确。
标签: twitter-bootstrap asp.net-mvc-4 jquery-validate radio-button