【问题标题】:jquery ui tabs and form validation pluginjquery ui 选项卡和表单验证插件
【发布时间】:2025-11-22 13:45:02
【问题描述】:

我正在使用 jquery Ui 选项卡和验证插件,对于我的表单,表单分为 4 个步骤(如向导)并通过导航(不是选项卡)浏览选项卡,每个步骤都包含表单元素并且需要验证,;她是我的代码:

<script>
            $('#registration').validate({
                errorClass: "warning",
                debug:true,
                onkeyup: true,
                onblur: true,
            });

        var $tabs = $('#tabs').tabs();
        $('.next').click(function() {                            
               $tabs.tabs('select', $(this).attr("rel"));
           });

        $('.back').click(function() {
            $tabs.tabs('select', $(this).attr("rel"));
         });
</script>

    <div id="tabs">
<ul style="display:none">
    <li><a href="#tabs-1">1</a></li>
    <li><a href="#tabs-2">2</a></li>
    <li><a href="#tabs-3">3</a></li>
    <li><a href="#tabs-4">4</a></li>
</ul>
<form id="registration" name="registration" method="post" action="<?php $PHP_SELF ?>">
<div id="tabs-1">
    <input name="test1" type="text" class="required" /><br />
    <input name="test2" type="text" class="required" /><br />
    <input name="test3" type="text" class="required" /><br />
    <input name="test4" type="text" class="required" /><br />

    <button type="button" class="next" rel="2" name="test">Next</button>

</div>
<div id="tabs-2">
    <input name="test1" type="text" class="required" /><br />
    <input name="test2" type="text" class="required" /><br />
    <input name="test3" type="text" class="required" /><br />
    <input name="test4" type="text" class="required" /><br />

    <button type="button" class="back" rel="1" name="test">Back</button>
    <button type="button" class="next" rel="3" name="test">Next</button>
</div>
  <div id="tabs-3">
    <input name="test1" type="text" class="required" /><br />
    <input name="test2" type="text" class="required" /><br />
    <input name="test3" type="text" class="required" /><br />
    <input name="test4" type="text" class="required" /><br />

    <button type="button" class="back" rel="2" name="test">Back</button>
    <button type="button" class="next" rel="4" name="test">Next</button>

</div>
<div id="tabs-4">
    <input name="test1" type="text" class="required" /><br />
    <input name="test2" type="text" class="required" /><br />
    <input name="test3" type="text" class="required" /><br />
    <input name="test4" type="text" class="required" /><br />

    <button type="button" class="back" rel="3" name="test">Back</button>
    <button type="submit" class="submit"  name="test">Register</button>

</div>
</form>
</div>

我尝试在每个步骤中进行验证,但我不能, 请帮帮我

【问题讨论】:

    标签: forms jquery-validate jquery-ui-tabs wizard


    【解决方案1】:

    您可以添加ignore 选项以忽略当前通过:hidden selector 不可见的选项卡,如下所示:

    $('#registration').validate({
      errorClass: "warning",
      debug:true,
      onkeyup: true,
      onblur: true,
      ignore: ':hidden'
    });
    

    【讨论】:

    • 我想在单击下一步按钮时进行验证,但我尝试的方法不起作用;您的代码也无法正常工作:(
    • @Pezhman - 添加验证调用,例如:$('.next').click(function() { $tabs.tabs('select', $(this).attr("rel")); $('#registration').valid(); }); 这就是你想要的吗?
    • :( 它不工作!我试过了!当我点击下一步时,它验证并转到下一个选项卡,但我想要的是,它必须验证而不是下一个步骤,直到写完所有需要的文件,
    • @Pezhman - 哦,当然,像这样:$('.next').click(function() { if($('#registration').valid()) $tabs.tabs('select', $(this).attr("rel")); });
    • 哇 tnx,它正在工作,但是有一个小问题,如果在第一步显示错误,则在所有步骤(选项卡)中错误消息都是可见的!
    【解决方案2】:

    我找到了解决方案, link text

    【讨论】: