1

我想通過使用jQuery的窗體中的輸入元素循環,以便我可以做一些輕量級的客戶端驗證。我使用Django來生成頁面服務器端,我遇到的問題是特定的頁面有很多動態生成的表單,所以我不知道它們的ID。如果我做了,我可以輕鬆地進行驗證。我如何一般地使用jQuery在表單中循環輸入元素?

因此,在我的javascript我試圖捕獲表單的提交操作,當發現,以某種方式獲取輸入元素,以便我可以檢查參數。以下是我已經試過除其他事項外:

$(".s-inputs").submit(function(event){  
    $(this).filter(':input').each(function(){ 
    console.log("Doesn't work"); 
    }); 
    event.preventDefault(); 
}); 

我想包括生成HTML形式以下,但一些在模板系統擺脫它的堆棧溢出的格式Django的代碼。無論如何,我認爲這不會很有教育意義。本質上,我的html只是頁面上的任意數量的表單,每個表單都有任意數量的輸入,全部是動態生成的服務器端。他們共同分享的唯一東西就是班級的「投入」。

感謝您的任何幫助。

+0

還包含您正在選擇的部分html – arkoak 2015-03-19 12:30:10

+0

它基本上是任意數量的通用,其中包含任何數量的,其數量我不知道提前。我可以將它們全部分配給同一個類,並且我可以使用django的工具爲它們分配一個唯一的ID,但是我不知道會生成多少個ID,因此我無法在這些ID中對這些JavaScript進行硬編碼。我需要一個通用的和程序化的方式來循環響應jquery .submit()函數的表單中的內部輸入。看到這裏的輸入示例表單:[鏈接](http://jsfiddle.net/rxwwoo2a/)謝謝。 – user45183 2015-03-19 16:20:34

回答

0

你應該使用find(),不filter()

$(this).find(':input').each(function(){ 
    console.log("Doesn't work"); 
}); 

filter()試圖篩選當前選定的元素(S)(這是目前只是你form元素),並刪除任何未被過濾什麼上。這將不會返回任何內容,因爲您的form元素與:input不匹配。

find()另一方面搜索包含在當前選定元素內的任何匹配選擇器。這將匹配您的form中包含的任何匹配:input元素。

+0

感謝您的回覆。改變它找到一些進展。現在我收到一條消息記錄到控制檯。但是,只有一條消息被記錄,並且該表單中有兩個輸入。當有兩個輸入時,它怎麼會只循環一次?請看我的生成的HTML如下所示:http://jsfiddle.net/rxwwoo2a/謝謝。 – user45183 2015-03-19 13:48:49

相關問題