【问题标题】:jQuery validating all tabs on form submitjQuery验证表单提交上的所有选项卡
【发布时间】:2011-12-09 08:59:19
【问题描述】:

目前的 jQuery 验证插件,仅验证选定的选项卡。因此,为了使所有选项卡都得到验证,我引入了忽略属性

$("form").validate({
....
 ....
ignore:"ui-tabs-hide"
});

但是在给出这个之后,它甚至可以验证隐藏的字段。有没有办法通过仅忽略每个选项卡上的隐藏字段来验证所有选项卡上的字段。

html

<div id="tabs">
<%@include file="inc/tabsList.jsp" %> <!--has <a> link for each div -->

<div id="fragment-1"><%@include file="inc/tradeDetails.jsp" %></div>
<div id="fragment-2"><%@include file="inc/beneficiaryDetails.jsp" %></div>
<div id="fragment-3"><%@include file="inc/referenceDetails.jsp" %></div>
<div id="fragment-4"><%@include file="inc/summary.jsp"%></div>

<div class="clear"></div>

</div>

JavaScript

$(function() {
var hiddenChevron;  
var $tabs = $('#tabs').tabs();

$("#fWdErrors_940").hide();

$("#singleSpotForm").validate({
        rules: {
            'singleSpotRequestVO.entity.entityName' : "required",
            'singleSpotRequestVO.subEntity.entityName' : "required",                
            'singleSpotRequestVO.transactionType' : "required",
            'singleSpotRequestVO.tradeCurrencyId' : "required"
        },
        errorContainer: 'fWdErrors_940',
        errorClass: "errorMsgItemText",
        errorPlacement: function(error, element) {              
             error.appendTo( element.parent("td").last() );
        },
        invalidHandler: function(form, validator) {
            var errors = validator.numberOfInvalids();
            if(errors){
                var message = validator.numberOfInvalids() == 1 ?
                        validator.numberOfInvalids() + " error " :
                        validator.numberOfInvalids() + " errors ";  
                $(".failureErrCount").html( message );
                $("#fWdErrors_940").show().focus(); 
            }else{
                $("#fWdErrors_940").hide(); 
            }

        },
        onkeyup : false,
        ignore: "ui-tabs-hide"

});
})

【问题讨论】:

  • 只要所有输入元素都在一个表单中,验证插件仍应检查它们。您能否发布您的 HTML 示例。

标签: jquery validation tabs


【解决方案1】:

非常好...解决方案是组合:

$("form").validate({
....
 ....
ignore:"ui-tabs-hide"
});

更多...

$("div[id^=fragment-]").bind("click", function() {
   $("div[id^=fragment-]").children("input, select, textarea").prop("disabled", true);
   $(this).children("input, select, textarea").prop("disabled", false);
});

【讨论】:

    【解决方案2】:

    您需要禁用其他控件。

    试试这个:

    $("div[id^=fragment-]").bind("click", function() {
       $("div[id^=fragment-]").children("input, select, textarea").prop("disabled", true);
       $(this).children("input, select, textarea").prop("disabled", false);
    });
    

    这将使当前选项卡的控件保持启用状态并禁用其他选项卡控件,因此验证器将仅验证选项卡中的当前元素。

    【讨论】:

    • 感谢您的回复,我想要相反的方式。验证器用于验证所有选项卡中可用的元素,只保留隐藏。
    • jquery.validate.js 尚不可用。您可以尝试考虑向开发人员提出功能请求。
    • 你能帮我在哪里发起功能请求吗?
    • 您可以在他们的(GitHub 存储库)[github.com/jzaefferer/jquery-validation] 中提出问题
    猜你喜欢
    • 2015-01-12
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多