2011-11-18 81 views
1

在index.php中錯誤時獲取值從輸入[類型= 「隱藏」]

<input type="hidden" name="id" value="1" /> 
<input type="hidden" name="type" value="2" /> 
中的script.js

$(document).ready(function(){ 
    $('#button').click(function(){ 
     var id = $(this).prev('input[type="hidden"][name="id"]').val(); 
     var type = $(this).prev('input[type="hidden"][name="type"]').val(); 
     alert(id); 
     alert(type); 

}); 

當我運行index.php文件,結果是不確定的,如何修復它

+4

嗯,一方面,只有一個對象可以直接放在按鈕元素的前面,所以最多隻能找到其中一個輸入,並且只有當按鈕直接位於DOM之後時纔會出現。 –

回答

4

prev()僅獲取迫切前述元件和至少爲「id」元素不先於按鈕。

我猜按鈕和輸入共用相同的父,所以你大概可以使用:

var id = $(this).parent().find('input[type="hidden"][name="id"]').val(); 
var type = $(this).parent().find('input[type="hidden"][name="type"]').val(); 

你需要添加周圍的HTML和按鈕的HTML如果這並未」工作。

編輯:另一種選擇可能使用prevAll()而不是prev()

3

你爲什麼不直接從根目錄選擇?

>var id = $('input[type="hidden"][name="id"]').val(); 
>var type = $('input[type="hidden"][name="type"]').val(); 
+1

如果頁面上有多個相似的表單/輸入元素,這可能會很危險。 – RoToRa

+1

你不能有兩個具有相同名稱值的輸入 – alessioalex

+0

@alessioalex:當然你可以,即使是在相同的形式。 – RoToRa

0

在你的情況下,有沒有必要使用[type="hidden"]。嘗試簡化選擇器,這樣的: $(this).prev('input[name="id"]').val();

1

如果你使用上一個()的元素名稱「ID」,沒有即時 一個同級。

var id = $(this).prev('input [type =「hidden」] [name =「id」]')。val();

這項事業的錯誤 '未定義'。