2014-10-02 86 views
4

以下兩頁帶有不同類的表單,但每個表單都有一個具有相同名稱的輸入。按表單索引和輸入名稱的jQuery選擇器

<form class='first_form'> 
<input name='test' value='1' /> 
</form> 
<form class='second_form'> 
<input name='test' value='3'/> 
</form> 

我可以得到表單索引,我知道輸入的名稱,但我不知道輸入的索引。

有沒有辦法鏈接選擇器的形式索引和輸入名稱來獲取值?

我試圖鏈接,但似乎沒有任何工作

var inputName = 'test'; 
Var formIndex = 1; 

$('*[name="' + inputName + '"]' +' ' + '$("form").eq(' + formIndex + ')').val(); 
+0

請檢查小提琴 – 2014-10-02 15:52:02

回答

3

FIDDLE

var formIndex=0; 
var inputName="txtbox"; 
vall= $("form:eq("+ formIndex+") input[name= "+ inputName +" ]").val(); 
alert(vall); 

您的訂單是錯誤的

+5

這甚至不是一個有效的選擇器。 – Stryner 2014-10-02 15:32:25

+0

@Ninsly但它有兩個投票:) – Regent 2014-10-02 15:34:07

+0

它應該是':eq',而'*'是不必要的。 – Regent 2014-10-02 15:34:59

2

未經檢驗的,但你可以這樣做:

$('form:nth-of-type(1) input[name="test"]').val(); 
2
$("form:nth-child("+formIndex+") input[name='"+inputName+"']").val(); 
2

你可以在一個更聰明的方法做:

var fieldName = 'test'; 
var formId = '.first_form' 
$('form'+formId+' input[name='+fieldName+']).val() 

相反指標,使用命名選擇,如ID或一類。這將有助於你在未來找到正確的形式(當你將有超過5,這將是很難計數女巫你正在看:)) 但這太複雜:)

我會建議是這樣的:

document.forms[formIndex] 
document.forms[formName] 

然後可以參考輸入元件通過使用name

var currentForm = $('form'+formId); 
currentForm//here you can put a log into console if element has not been found and find that bug sooner. 
currentForm.find('input[name='+fieldName+']').val() 
+0

Ech,更具體的方式:P但應該工作。其次,你缺少輸入的類型。我認爲這是文字。 – Beri 2014-10-02 15:33:12

+0

** formId ** ='**。first_form **' - 您確定將jQuery類選擇器字符串設置爲變量,其狀態爲ID,是好的還是聰明的? :) – Regent 2014-10-02 15:38:23

+0

我同意這是一個壞主意,但在這個例子中,類被添加到每個表單。所以我不想做太大的改變。現行身份證是識別身份的唯一正確方法。我的代碼適用於兩者 - 我只是想以另一種方式來解決這個問題,而不是索引.... – Beri 2014-10-02 15:58:54

2

您可以直接在DOM中使用以下任一訪問形式的元件

document.forms[formIndex][inputName] 
document.forms[formName][inputName] 

然後,只需將它包裝在$(...)中即可獲得jQuery集合。在你的情況:

var inputName = 'test', 
    formIndex = 1; 

$(document.forms[formIndex][inputName]); 

我想這是迄今爲止最高效的方式,它也是可讀的。

要添加一點細節,document.formsHTMLFormElement的一個HTMLCollection在一個文檔中。並給定任何HTMLCollectionHTMLFormElement您可以訪問其中的命名元素作爲屬性。