2013-03-26 23 views
0

休斯頓我們有一個情況..任何燈將不勝感激。通過JS或Jquery返回輸入組的當前索引

很難解釋,但會盡我所能。我做了功課,但無法解決。使代碼類似於以下內容。 (靜態,很難改變,需要找到現有結構的解決方案。)。

有問題的數組是[]級。

(line 1) \<input id='grade[]' onclick="curr_ndx(this);" \> // index of grade[] is 0 
(line 2) \<input id='grade[]' onclick="curr_ndx(this);" \> // index of grade[] is 1 
(line 3) \<input id='grade[]' onclick="curr_ndx(this);" \> // index of grade[] is 2 

我需要檢索'grade []'數組中的輸入'grade []'的索引。如果用戶點擊第2行的「輸入」,它應該提醒「1」,或者如果用戶點擊(第3行輸入),則提醒「2」。

謝謝你一堆。

+0

IDS應該是唯一的,因爲這些是輸入,我建議從ID更改爲名稱屬性。 – Musa 2013-03-26 05:48:51

+0

您需要爲所有輸入元素提供一些唯一的ID,顯然在您的情況下,它可以是索引,onclick可以返回具有索引的ID。 '身份證是獨一無二的你不能有多個同名的身份證' – Sandeep 2013-03-26 05:50:54

回答

2

在jQuery中,你可以使用.index()方法找出哪個兄弟給定的項目是這樣的:

HTML:

<div id="grades"> 
<input \> 
<input \> 
<input \> 
</div> 

代碼:

$("#grades input").click(function() { 
    alert($(this).index()); 
}); 

工作演示: http://jsfiddle.net/jfriend00/xvVGx/

僅供參考,您應該也沒有您輸入字段上的重複ID值。也許你打算使用name='grade[]'而不是id='grade[]'


如果您有其他輸入字段,並且您希望只算id='grade[]'的,那麼你可以這樣做:

$("#grades input").click(function() { 
    alert($(this).index("[id*='grade[]']")); 
}); 

但是,你真的不應該有重複的ID值,所以也許應該是這樣的:

HTML:

<div id="grades"> 
<input name='grade[]' \> 
<input name='grade[]' \> 
<input name='grade[]' \> 
</div> 

代碼:

$("#grades input[name='grade[]']").click(function() { 
    alert($(this).index("[name='grade[]']")); 
}); 
+0

但會過濾來自其他人的同名命令嗎?在我看來,OP已經混淆了ID和NAME的屬性。 – RobG 2013-03-26 05:55:20

+0

@RobG - OP沒有提出這樣的併發症,所以我沒有試圖解決這個問題。這就是爲什麼我把這些輸入標籤放在一個包含div的例子中。 – jfriend00 2013-03-26 05:57:29

+0

你是超級正確的。這些都應該是'名字'而不是'ID'。 – 2013-03-26 06:16:33

0

您可以使用jQuery index()http://api.jquery.com/index/

$('input').click(function() { 
    alert($(this).index()); 
}) 
+0

當我放置「警報($(this).index())」時發佈(-1)直接進入每個輸入點擊。只是瑣事。不知道這是否正確。 – 2013-03-26 06:19:04

0

如果你給的元素全部相同的名稱,該功能可以是:

function curr_ndx(el) { 
    var els = document.getElementsByName(el.name); 
    for (var i=0, iLen=els.length; i<iLen; i++) { 
    if (els[i] == el) return i; 
    } 
} 

如果這些元素是一種形式,你可以利用它:

function curr_ndx(el) { 
    var els = el.form[el.name]; 
    for (var i=0, iLen=els.length; i<iLen; i++) { 
    if (els[i] == el) return i; 
    } 
} 
+0

工程很棒。你們很棒。你們中的任何一個恰好在多倫多,啤酒就在我身上。 – 2013-03-26 06:36:04

相關問題