如果选中复选框,如何制作文本框

时间:2010-01-25 14:17:27

标签: .net asp.net validation

如果选中复选框,如何才能创建文本框?

我想我可以写一个自定义验证器,但是我希望尽可能避免完整的帖子来检查验证......我认为AJAX已经内置了这个场景,但我一直无法找到它。我正在思考JavaScript也是一个解决方案,但如果这是最好的方法,我可以先行一步。

6 个答案:

答案 0 :(得分:20)

处理这个问题的JavaScript并不是很困难。

给出以下ASP控件:

<asp:TextBox ID="txtSubject" runat="server" />
<asp:CheckBox ID="chkSubjectRequired" runat="server" OnClick="updateValidator();" />
<asp:RequiredFieldValidator ID="rfvSubject" ControlToValidate="txtSubject" ErrorMessage="You must enter a subject." runat="server" />

添加以下JavaScript函数:

<script language="javascript" type="text/javascript">
    function updateValidator() {
        var enableValidator = !event.srcElement.status;
        var rfvSubject = document.getElementById('rfvSubject');
        ValidatorEnable(rfvSubject, enableValidator);
    }
</script>

这就是它的全部。您还需要将以下代码添加到页面加载事件中,以便在用户禁用JavaScript时,仍然可以正确打开或关闭所需的字段验证器:

rfvSubject.Enabled = chkSubjectRequired.Checked

答案 1 :(得分:3)

要在ASP.Net中解决所有问题,请使复选框执行回发:

<asp:CheckBox 
     ID="Existing" 
     runat="server" 
     Text="Conditional ValidatorVal" 
     AutoPostBack="True" 
     OnCheckedChanged="Existing_CheckedChanged"
 />

然后在代码隐藏中启用或禁用验证器:

protected void Existing_CheckedChanged(object sender, EventArgs e)
{
     RequiredFieldValidator1.Enabled =! Existing.Checked;
}

答案 2 :(得分:2)

您可以创建自定义验证程序,然后将这两个控件包装在UpdatePanel中。那会把它变成一个AJAX调用。有点浪费,但它可以节省您自己编写JavaScript的费用。

另外,如果你讨厌像我一样编写JS,你应该尝试使用jQuery。

答案 3 :(得分:1)

已经有一个customvalidator验证器控件,可以触发客户端javascript方法来评估值,或者是服务器端方法来比较这些值。

这是一个例子:http://msdn.microsoft.com/en-us/library/a0z2h4sw%28VS.80%29.aspx 此处说明的客户资产:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.clientvalidationfunction.aspx 此处的服务器事件:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.servervalidate.aspx

您可以输入代码来交叉引用复选框值。

HTH。

答案 4 :(得分:0)

您必须使用CustomValidator并在复选框和文本框中使用 ClientIDMode =“Static”

<asp:TextBox ID="txtSubject" ClientIDMode="Static" runat="server" />
<asp:CheckBox ID="chkSubjectRequired" ClientIDMode="Static" runat="server" />
<asp:CustomValidator ID="valid1" runat="server" 
           ClientValidationFunction="validateCheckboxCheck" 
           ErrorMessage="You must write anything.">
</asp:CustomValidator>

并在函数下写下脚本标记(需要jQuery)

<script type="text/javascript">
function validateCheckboxCheck(source, args) {
            if ($("#chkSubjectRequired").is(":checked")) {
                if ($("#txtSubject").val()==="") {
                    // return false for error message
                    args.IsValid = false;
                } else {
                    // return true
                    args.IsValid = true;
                }
            } else {
                // return true
                args.IsValid = true;
            }
        }
</script>

答案 5 :(得分:-2)

您需要在当前使用的任何验证例程中检查它,包括客户端和服务器端。