根据此question,在选中/取消选中复选框时,我会尝试打开/关闭各种RequiredFieldValidator
控件。但是我没有为每个复选框设置单独的js函数,而是要传递输入的ClientID以进行验证,这样的事情(这里只有一个INPUT,但是一旦它工作就可以看到我可以在没有更多js的情况下添加更多的INPUT): / p>
<asp:TextBox ID="txtSubject" runat="server" />
<asp:CheckBox ID="chkSubjectRequired" runat="server"
OnClick="updateValidator('<%= rfvSubject.ClientID %>');" />
<asp:RequiredFieldValidator ID="rfvSubject" ControlToValidate="txtSubject"
ErrorMessage="You must enter a subject." runat="server" />
<script>
function updateValidator(inputId) {
var enableValidator = !event.srcElement.checked;
var theInput = document.getElementById(inputId);
ValidatorEnable(theInput, enableValidator);
}
</script>
目前不评估scriptlet txtSubject.ClientID
,只是直接输出。我确信这很简单,但我只是不知道合适的语法。
答案 0 :(得分:2)
如何通过codebehind(或脚本部分)添加它:
checkSubjectRequired.Attributes.Add("onclick", "updateValidator(" +
txtSubject.ClientID + ")");
This explaination of ClientID可能会有所帮助。
答案 1 :(得分:0)
这是因为; ASP.NET解析器无法解析服务器标记“&lt;%=%&gt;”用于服务器端控制(即,作为runat ='server'的控制)。 使用以下内容:
<asp:TextBox ID="txtSubject" runat="server" />
<asp:CheckBox ID="chkSubjectRequired" runat="server"
OnClick="updateValidator('<%#txtSubject.ClientID %>');" />
<asp:RequiredFieldValidator ID="rfvSubject" ControlToValidate="txtSubject"
ErrorMessage="You must enter a subject." runat="server" />
<script>
function updateValidator(inputId) {
var enableValidator = !event.srcElement.checked;
var theInput = document.getElementById(inputId);
ValidatorEnable(theInput, enableValidator);
}
</script>
答案 2 :(得分:0)
你可以这样做:
<asp:TextBox ID="txtSubject" runat="server" />
<asp:CheckBox ID="chkSubjectRequired" runat="server"
OnClientClick="updateValidator(this.id);" />
<asp:RequiredFieldValidator ID="rfvSubject" ControlToValidate="txtSubject"
ErrorMessage="You must enter a subject." runat="server" />
<script>
function updateValidator(inputId) {
var enableValidator = !event.srcElement.checked;
var theInput = document.getElementById(inputId);
ValidatorEnable(theInput, enableValidator);
}
</script>