如何根据另一个字段jquery规则消息验证一个字段是否包含某些值

时间:2012-11-28 20:59:52

标签: jquery asp.net if-statement conditional-statements

所以我有两个单选按钮,一个是'是'而另一个是'不',我有一个文本框。所有这些都是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"/>

2 个答案:

答案 0 :(得分:0)

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

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

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

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

您可以将其与例如一个自定义验证器来实现您的目标。有关自定义验证程序here的更多信息。接下来,文章提到ClientValidationFunction属性,该属性应包含执行验证逻辑的函数的名称。 MSDN参考是here

答案 1 :(得分:0)

非常感谢,

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

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

    if($('#<%= rbNo.ClientID  %>').is(':checked')) {
        txtBox.attr('disabled', true);
    } else {
        txtBox.removeAttr('disabled');
    }
    
  2. 要向jQuery validate添加规则(也在$(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');
            }
        }           
    }