2012-12-29 28 views
1

我趕上形式的數據異步引用輸入使用以下方式Twitter的引導創建。 ..我試圖$ form.username,$ form ['用戶名'],但無濟於事,我無法找到如何獲得輸入。我知道我可以使用具體形式

​​

但由於我已經有了表單對象,我想盡可能使用它。

感謝

+0

你可以發佈一些相關的標記 – Rafay

+2

順便說一句,'.live()'已被棄用,以支持'.on()'。 –

回答

2

內,您的提交處理程序,將輸入username場可以簡單地引用:

this.elements['username'] 

無需花哨的jQuery的:)

更新

沒有實現elements是一個相當新的增加。在此之前,你可以使用:

this.username 

更新2

一個勻版本是這樣的:

var field = this.elements ? this.elements['username'] : this.username; 
+0

我做了50000次迭代的測試......你的解決方案需要〜400ms,.find()需要〜5500ms,contexty需要〜7000ms。所以我最喜歡這個,但是你能否詳細說明「最近的增加」?我怎樣才能確定我的代碼在哪些瀏覽器上工作? – Marin

+1

@Marin在'.elements'之前,輸入框將是表單元素本身的屬性,所以應該仍然有效。這可以被刪除。 –

5

您可以使用.find()

var $input = $form.find('input[name=bla]'); 

編輯 —評論員傑克指出,另外還有HTML5 「要素」 的形式DOM元素的屬性。這可以讓您通過名稱或ID或數字索引進行輸入。

var input = this.elements['bla']; 

按名稱訪問是由一個事實,即該機構還認爲元素「ID」屬性(其實那些優先考慮,我認爲)複雜。

+0

簡單的JavaScript發生了什麼? ;-) –

+0

@Jack很好處理表單輸入的字段名稱變成表單屬性的處理DOM元素並不是真正的標準,我認爲這是一個可怕的想法,因爲與其他重要表單屬性發生衝突的明顯問題。然而,HTML5的「元素」屬性。 – Pointy

+0

哦,沒有意識到'elements'是一個HTML5屬性;-) –

1

您可以使用表單對象作爲context with selector來查找上下文中的元素。

語法:jQuery(selector [ , context ] )

$('input[name=bla]', $form); 

你可以使用這個,因爲它代表了你的形式。

$('form[data-async]').live('submit', function(event) { 

    $('input[name=bla]', this); // this is your form 

}) 
+0

這假設input元素的id是'input'?:) –

+0

我喜歡這個比發現(),但你需要「失去#」,因爲傑克說上面:) – Marin

+0

謝謝你們我有錯字,只是刪除了# – Adil