使用jQuery验证插件验证单选按钮组

use*_*052 126 validation jquery

如何使用jQuery验证插件执行单选按钮组的验证(应该选择一个单选按钮)?

小智 111

随着更新版本的jquery(我认为是1.3+),你所要做的就是设置一个必需的收音机成员,jquery将负责其余的事情:

<input type="radio" name="myoptions" value="blue" class="required"> Blue<br />
<input type="radio" name="myoptions" value="red"> Red<br />
<input type="radio" name="myoptions" value="green"> Green
Run Code Online (Sandbox Code Playgroud)

在继续之前,上述将要求选择3个无线电选项中的至少1个与"我的选项"的名称.

Mahes的标签建议,顺便说一句,效果非常好!

  • 唯一的问题是当它们都没有被检查时,jQuery validate突出显示红色的第一个单选按钮,但实际上你可能想要突出显示所有这些按钮.此外,一旦你检查任何单选按钮,红色应该消失. (6认同)
  • @Haacked您可以在验证选项中使用errorPlacement回调函数将错误消息放在有意义的地方吗? (2认同)
  • @Haacked:将`focusInvalid:false`添加到`validate()`选项将阻止突出显示第一个单选按钮. (2认同)
  • 我总是这样做,并将错误标签放在errorPlacement函数中.这就是我对单选按钮所做的事情:if(element.is("input:radio")){error.insertAfter(element.parent()); } else {error.insertAfter(element); } (2认同)

Mah*_*hes 23

使用以下规则验证单选按钮组选择

myRadioGroupName : {required :true}
Run Code Online (Sandbox Code Playgroud)

myRadioGroupName是您为name属性赋予的值

  • 请注意,如果要控制标签的位置,可以根据需要提供自己的错误标签:<label for ="myRadioGroupName"class ="error"style ="display:none; ">请选择一个.</ label> (13认同)
  • 很久以前,但我想我想要做的是将<label>放在DOM的其他地方,而不是插件自动创建的地方.此外,插件行为很可能在过去5年中发生了变化...... (2认同)

小智 18

你也可以用这个:

<fieldset>
<input type="radio" name="myoptions[]" value="blue"> Blue<br />
<input type="radio" name="myoptions[]" value="red"> Red<br />
<input type="radio" name="myoptions[]" value="green"> Green<br />
<label for="myoptions[]" class="error" style="display:none;">Please choose one.</label>
</fieldset>
Run Code Online (Sandbox Code Playgroud)

并简单地添加此规则

rules: {
 'myoptions[]':{ required:true }
}
Run Code Online (Sandbox Code Playgroud)

提到如何添加规则.

  • 请注意,单选按钮只能返回一个值,因此,`name ="myoptions []"`有点令人困惑,因为它提示可以返回多个值. (2认同)

Mat*_*ear 5

根据布兰登的回答。但是,如果您使用的是使用非侵入式验证的 ASP.NET MVC,则可以将 data-val 属性添加到第一个。我也喜欢为每个单选按钮添加标签以提高可用性。

<span class="field-validation-valid" data-valmsg-for="color" data-valmsg-replace="true"></span>
<p><input type="radio" name="color" id="red" value="R" data-val="true" data-val-required="Please choose one of these options:"/> <label for="red">Red</label></p>
<p><input type="radio" name="color" id="green" value="G"/> <label for="green">Green</label></p>
<p><input type="radio" name="color" id="blue" value="B"/> <label for="blue">Blue</label></p>
Run Code Online (Sandbox Code Playgroud)