使用jQuery validate插件根据下拉字段中选定的响应创建所需的字段

时间:2015-01-02 19:27:40

标签: jquery forms jquery-validate

这是我第一次使用jQuery,我迫切需要一些帮助。

我在visualforce页面(Salesforce)上有一个表单,我试图使用jQuery validate插件进行验证。我有一些隐藏的字段,除非用户选择"是"从下拉框中。新字段需要更多详细信息,并且在呈现时应该是必需的。

问题是,当下拉菜单是"是"

时,我不知道如何编写函数以返回true。

我试过这个没有成功:

j$('[id$=newDGRecord]').validate();     
j$('[id$=InsuranceHistory]').rules("add",{
                required: true
            });

j$('[id$=insuranceRiskHistory]').rules("add",{
                required: function() {
                  return j$('[id$=InsuranceHistory]').val() == "Yes";
                    }
                });

相关视力标记是:

<div class="form-group required">
                                <apex:outputLabel value="Insurance History" for="InsuranceHistory" styleClass="control-label col-sm-2" />
                                <div class="col-sm-10">
                                    <apex:outputText >
                                        <p>Have you, your business, or anyone else named on this form ever had insurance declined, cancelled or refused? </p>
                                    </apex:outputText>
                                    <apex:inputField value="{!Dumping_Grounds__c.Insurance_Declined_or_Cancelled__c}" styleClass="form-control" id="InsuranceHistory" >
                                      <apex:actionSupport event="onchange" rerender="insurancepanel"/>
                                    </apex:inputField>
                                </div>
                            </div> 
                            <apex:outputPanel id="insurancepanel">
                                  <apex:outputPanel rendered="{!IF(Dumping_Grounds__c.Insurance_Declined_or_Cancelled__c = 'Yes', true,false)}" id="insuranceRisk">
                                      <apex:outputLabel value="More Details" styleClass="control-label col-sm-2" for="insuranceRiskHistory"/>
                                      <div class="col-sm-10">
                                        <p>Please provide additional details.</p>
                                        <apex:inputField value="{!Dumping_Grounds__c.Insurance_History__c}" styleClass="form-control" id="insuranceRiskHistory"/>
                                      </div>
                                   </apex:outputPanel>
                            </apex:outputPanel> 

有人可以帮我吗?看起来很简单,但我迷路了。

1 个答案:

答案 0 :(得分:0)

你正在使用&#34;结束于&#34;选择器,$= ...

j$('[id$=InsuranceHistory]')

因此,您的选择器可能包含多个项目。

但是,使用jQuery Validate插件时,其方法仅应用于组中的 first 项。因此,您需要使用.each()将该方法应用于所有项目......

j$('[id$=InsuranceHistory]').each(function() {
    j$(this).rules("add", {
        required: true
    });
});

  

&#34;我不知道在下拉菜单是&#39;&#39;&#34;

时如何编写该功能以返回true

您可以使用the depends property编写函数。

required: {
    depends: function(element) { // element is the object being evaluated
        // your conditional
        // return true to activate the 'required' rule
    }
}

我无法看到您的HTML标记,也不知道为什么您使用&#34;以&#34;结尾?选择一切,所以我不可能构建确切的工作代码。

我也不确定您为什么要使用.rules('add')方法来声明规则。您的.validate()方法在哪里?为什么不能使用它?