2012-07-11 50 views
0

這是一個奇怪的。我有我的設置像這樣..jQuery驗證問題與表格內的表格

<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> 

現在我想要使用類=與窗體中的第二#serachIngredient形式「需要」,然而,以驗證剛剛輸入的在#main形式,驗證根本不起作用。

Incase您想知道:#searchIngredient窗體使用ajax返回結果,由於設計,它需要在#main窗體中。

我知道jQuery的驗證工作沒有#searchIngredient形式,但一旦我加回來,它停止工作,沒有錯誤。

任何建議的解決方法或提示?

回答

-2

我有同樣的問題,我的解決方案(因爲我不能沒有嵌套的形式做的)是:

<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 
    }); 
}); 
+0

嵌套HTML表單導致無效的HTML。 http://stackoverflow.com/questions/379610/can-you-nest-html-forms – 2015-05-21 17:44:09

7

這是不可能的。 HTML中不支持嵌套表單。

內部表單的開始標記將被忽略,並且內部表單的結束標記將代替結束外部表單,而將提交按鈕留在表單之外。

您可以在頁面中擁有儘可能多的表單,但不能嵌套在另一個表單中。

+0

那麼目前沒有辦法做到這一點?我甚至嘗試在標題後面結束#main表單,然後使用jQuery將最後一個提交輸入(兩個表單之外)提交到#main表單,但它不起作用。 – Braunson 2012-07-11 01:22:59

+0

@Braunson:驗證使用'submit'事件,對吧?如果您調用'submit'方法發佈表單,則不會觸發該事件,因此您必須手動觸發該事件。 – Guffa 2012-07-11 01:26:56

+0

我試過使用表單外部的提交來觸發驗證,但沒有運氣。由於有相當多的領域,每個使用元素不是一個想法的解決方案。 – Braunson 2012-07-11 01:55:20

0

我有同樣的問題,因爲嵌套表單不支持在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>