0

所以我有两个单选按钮,一个是“是”,另一个是“否”,我有一个文本框。它们都是asp.net控件。如果选中“是”单选按钮,我试图在文本框中输入一个值,如果选中“否”单选按钮,则不需要它。我需要使用 jQuery 规则和消息来做到这一点。有谁知道如何为以下控件执行此操作?

<asp:RadioButton runat="server" ID="rbYes" GroupName="radioGroup" Text="Yes"/>
<asp:RadioButton runat="server" ID="rbNo" GroupName="radioGroup" Text="No"/>
<asp:TextBox runat="server" ID="txtBox"/>
4

2 回答 2

0

看看ClientID.NET 控件的属性。例如,要确定是否选中了“是”单选按钮,请使用

var yesIsChecked = $('#<%=rbYes.ClientID%>').is(':checked');

同样,要测试文本框是否为空,请使用

var txtBoxIsEmpty = $('#<%=txtBox.ClientID%>').val() == "";

您可以将其与例如自定义验证器结合使用来实现您的目标。有关自定义验证器的更多信息,请点击此处。在底部,文章提到了ClientValidationFunction属性,它应该包含执行验证逻辑的函数的名称。MSDN 参考在这里

于 2012-11-28T23:30:40.003 回答
0

非常感谢,

这就是我解决问题的方式:

  1. 要禁用或启用文本框,我将以下代码放在$(document).ready()jQuery 脚本块的部分中:

    if($('#<%= rbNo.ClientID  %>').is(':checked')) {
        txtBox.attr('disabled', true);
    } else {
        txtBox.removeAttr('disabled');
    }
    
  2. 将规则添加到 jQuery 验证(也在$(document).ready()代码块中):

    var rules = {
        txtBox: {
            required: true,
            messages: {required: "Required field when Yes is checked"}
        }
    };
    
    $('#<%= rbNo.ClientID  %>').click(function (e) {
        if (this.checked) {
            txtBox.attr('disabled', true);
            addOrRemoveRules(rules, "remove");
        }
        else {
            txtBox.removeAttr('disabled');
            addOrRemoveRules(rules, "add");
        }
    });
    
  3. 现在在$(document).ready()代码块之外,在javascript代码块中,您需要包含添加或删除规则和消息所需的函数:

    function addOrRemoveRules(rulesObj, operation){
    if (operation == "add") {
            for (var item in rulesObj){
                $('#'+item).rules('add',rulesObj[item]);  
            }
        }
        else{
            for (var item in rulesObj){
               $('#'+item).rules('remove');
            }
        }           
    }
    
于 2012-12-14T21:03:34.430 回答