【问题标题】:jQuery Validation Issue with a form inside a form表单内的表单的jQuery验证问题
【发布时间】:2012-07-11 01:14:11
【问题描述】:

这是一个奇怪的问题。我的设置是这样的..

<form id="main">
    <input name="title" class="required">
    <form id="searchIngredient">
          <input name="search">
          <input type="submit" name="submit" value="Search">
    <form>
    <input type="submit" name="submit" value="Add New Recipe">
</form>

现在我尝试使用 class="required" 仅验证#main 表单中的输入,但是使用表单中的第二个#serachIngredient 表单,验证根本不起作用。

Incase You Are Wondering:#searchIngredient 表单使用 ajax 来返回结果,并且由于设计原因,它需要在 #main 表单内。

我知道 jQuery 验证在没有 #searchIngredient 表单的情况下工作,但是一旦我将其添加回来,它就会停止工作,没有错误。

任何建议的解决方法或提示?

【问题讨论】:

    标签: jquery forms validation jquery-validate


    【解决方案1】:

    这是不可能的。 HTML 不支持嵌套表单。

    内部表单的开始标记将被忽略,内部表单的结束标记将改为结束外部表单,将提交按钮留在表单之外。

    您可以在页面中拥有任意数量的表单,但不能相互嵌套。

    【讨论】:

    • 所以目前没有办法做到这一点?我什至尝试在标题之后立即结束#main 表单,然后使用 jQuery 进行最后一个提交输入(在两个表单之外)以提交#main 表单,但它没有用。
    • @Braunson:验证使用submit 事件,对吗?如果调用submit方法发布表单,事件不会触发,所以需要手动触发。
    • 我尝试使用表单外的提交来触发验证,但没有成功。由于有很多领域,并且为每个领域使用元素并不是一个理想的解决方案。
    • @Braunson:如果您手动调用验证,您应该能够验证整个表单,而不仅仅是一次验证一个元素。
    • 我尝试调用它但收到“TypeError: Object [object Object] has no method 'valid'”
    【解决方案2】:

    我有同样的问题,因为在 html 中不支持嵌套表单 嵌套表单将被忽略,但看起来只有第一个嵌套表单会被忽略 因此,对于 jquery 表单验证,我尝试在主表单之后添加嵌套,然后添加要验证的表单,它工作正常。

    <form id="main">
    <form>
    </from>
        <input name="title" class="required">
        <form id="searchIngredient">
              <input name="search">
              <input type="submit" name="submit" value="Search">
        <form>
        <input type="submit" name="submit" value="Add New Recipe">
    </form>
    

    【讨论】:

      【解决方案3】:

      我有同样的问题,我的解决方案(因为我不能没有嵌套表单)是:

      <form id="main">
          <input name="title" class="required">
          <form id="searchIngredient">
                <input name="search">
                <a href="#" class="submit-link"></a>
          <form>
          <input type="submit" name="submit" value="Add New Recipe">
      </form>
      

      然后我挂钩类提交,并做我的 ajax 的东西

      $(document).on('click', 'form a.submit-link', function(e){
        e.preventDefault();
        var form = $(this).parents('form').first();
        var search = form.find('input[name="search"]').val();
        jQuery.post('my_ajax_url.php', {search: search)}, function(data, status, xhr) {
          // deal response
        });
      });
      

      【讨论】:

      猜你喜欢
      • 2011-07-14
      • 2011-07-17
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多