我有以下表单项:
Medications:
<asp:RadioButtonList ID="meds" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Value="1">Yes (list below)</asp:ListItem>
<asp:ListItem Value="0">No</asp:ListItem>
</asp:RadioButtonList>
Medication List:
<asp:CustomValidator ID="val_medsList" runat="server" ClientValidationFunction="check_medsList"
OnServerValidate="val_medsList_ServerValidate" ValidationGroup="GroupSave" ValidateEmptyText="true"
ErrorMessage="required" ControlToValidate="medsList" EnableClientScript="true">
</asp:CustomValidator><br />
<asp:TextBox ID="medsList" CssClass="jQueryMedsListTarget" TextMode="MultiLine" runat="server"
Width="500" MaxLength="500" Wrap="true" Rows="3" />
这个想法是,如果选择“是”,则需要填写文本框,如果选择“否”,则相反。为了让“是”/“否”选项触发自定义验证器,我使用 'ValidatorHookupControl' 如下:
ValidatorHookupControl(document.getElementById('meds_0'), document.getElementById('val_medsList'));
ValidatorHookupControl(document.getElementById('meds_1'), document.getElementById('val_medsList'));
这对我有用,但是当我有两个以上的选择时,这会变得很烦人。我创建了以下内容来遍历所有选项,但它似乎不起作用(“是”和“否”不会触发自定义验证器):
$(document).ready(function () {
hookupRadioButtonListToVal($('input[id^=meds_]'), $('#val_medsList'));
});
function hookupRadioButtonListToVal(rbl, validator) {
$(rbl).each(function () {
ValidatorHookupControl($(this), $(validator));
});
}
我假设我没有返回正确类型的元素,$(this)
但$(validator)
不确定从那里去哪里。