2012-04-04 24 views
1

我有問題將jQuery添加到一些現有的代碼,請幫助。jQuery:如何通過名稱檢測表單

我們在頁面上出現了幾次相同的表單(相同的表單名稱,相同的字段,相同的提交按鈕,沒有爲表單定義的id或類),現在我需要使用jQuery驗證表單,而不通過在表單對象中,jQuery可以告訴哪個表單被提交了?

謝謝大家對您的回覆,問題就解決了:-)

+3

如果您需要修改的頁面添加一些基於jQuery的功能的能力,爲什麼不還的形式將自己添加的東西相互區分開來? – 2012-04-04 17:12:38

+0

你說這些表格是「相同的」,但似乎關心提交哪種表格。那是因爲有不同的驗證規則依賴於正在驗證的特定表單嗎?我想我很想知道爲什麼你甚至在乎提交的表單在所有有意義的方面都是相同的。 – 2012-04-04 17:16:33

+0

表單頁面與他人分享,所以我只能在腳本文件 – June 2012-04-04 17:17:31

回答

1

從你的問題的評論,它看起來像你可能需要與你的選擇沿指定形式的上下文:

$('form').submit(function() { 
    var form = $(this); 
    var myInputValue = $("input[name='myinput']", form).val(); 
    // myInputValue is now the value of the myinput control that is 
    // within the submitted form 
}); 

注意,jQuery函數有一個可選的第二個參數是的上下文選擇。這應該可以幫助您僅在您提交的表單中找到輸入元素。

檢查這裏的文檔:

http://api.jquery.com/jQuery/#expressioncontext

@ NiftyDude的回答得到的同樣的問題,雖然他不使用jquery專門獲取當前提交表單的孩子。

+0

很好,解決了我的問題。 – June 2012-04-04 18:08:54

+0

非常感謝克里斯。 – June 2012-04-04 18:09:08

0

不要緊,你是否已#ID或的.class連接到<form>標籤以選擇它。

試試這個:

$('form').submit(function() { 
    //put your ajax submission code here... 
}); 
0

$("form[name='IDENTIFIER']"),如果你有一個頁面上有多個形式爲目標的具體形式

0
$('form').submit(function(e) { 
    // $(this) refers to the current form being submitted 

    // if you need to, for example iterate over all the inputs 
    var inputs = $(this)[0].getElementsByTagName('input'); // array of inputs 

    for(var i = 0; i < inputs.length; i++) { inputs[i].value; } 

    // this is important to avoid recursive submit 
    $(this)[0].submit(); 

    return false; 
}); 
0
$('form').submit(function(){ 
    var form = $(this); 
    var inputs = $('input', this); 
    var isValid = true; 

    //do validation on the inputs of the form submitted. 

    if (isValid) { 
     //do something 
    } 

    return false; 
}); 

或者這是有用的,你可以趕上提交輸入行動(這是我喜歡做的事):

$('input[type="submit"]').click(function(event){ 
    event.preventDefault(); 
    var form = $(this).nearest('form'); 
    var inputs = $('input', form).not(this); 
    var isValid = true; 

    //validate inputs 
    if (isValid) form.submit(); 
}); 

請注意,根據您的代碼,isValid = true可能不需要。如果您的任何元素未通過驗證並且表單提交不會繼續,則可將其設置爲false。如果您使用驗證庫來爲您完成此操作並提交表單(如果有效),則不需要它。

一些驗證設定失敗的每個項目無效類,你可以直接檢查的形式是有類,以確定是否應將表單提交輸入的存在。

+0

爲什麼我需要isValid? – June 2012-04-04 17:24:04

+0

@June你可能不會...取決於你用來做驗證。更新的答案反映了這一點。 – 2012-04-04 17:29:02

+0

'isValid'只是當你確定輸入字段處於有效狀態時你將設置的標誌,因此'//對輸入進行驗證......'評論。 – 2012-04-04 17:29:04