我有一个转发器,它包含一个单选按钮列表,一个文本框和一个requiredfieldvalidator控件。 Radiobuttonlist包含以下内容:
Meets (Value M)
Above (Value A)
Below (Value B)
N/A (Value(N/A)
文本框设置为允许用户为其答案输入一些理由,而requiredfieldvalidator确保文本框不为空,足够简单。但是范围已经改变了一点,现在客户希望只有在答案不是“M”的情况下才能触发requiredfieldvalidator。
我已经尝试为验证器设置Load方法,但是当验证器加载时,它不知道RBL中的答案是什么,因为它在用户应答之前被触发。我不认为我可以做回发,因为转发器是在Modal弹出窗口内处理的,如果我做回发,我不确定会发生什么。只有当用户选择“Meets”以外的其他内容时,如何才能将验证器设置为false?
答案 0 :(得分:1)
试试这个:
java脚本:
<script type="text/javascript">
function UpdateValidator(radioID, validatorid) {
//enabling the validator only if the checkbox is checked
var enableValidator = $("#" + radioID).is(":checked");
ValidatorEnable(validatorid, enableValidator);
}
</script>
cs code:
protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
RadioButton rd = e.Item.FindControl("myRb") as RadioButton;
RequiredFieldValidator rfv = e.Item.FindControl("myRfv") as RequiredFieldValidator;
// you can just pass "this" instead of "myDiv.ClientID" and get the ID from the DOM element
rd.Attributes.Add("onclick", "UpdateValidator('" + rd.ClientID + "','" + rfv.ClientID + "');");
}
}