2011-12-02 55 views
2

我在foreach循環創建一些輸入字段:如何從生成的文本輸入中獲取值?

<?php foreach($this->results as $value){?> 
<td><a href="$" class="buttonDetails">View Detail</a> 
<input name="processor" id="processor" type="text" value="<?php echo $value['processor']; ?>"> 
<input name="auth_code" class="auth_code" type="hidden" value="<?php echo $value['auth_code']; ?>"></td> 
<? } ?> 

是會給我這樣的:

<td> 
<a href="$" class="buttonDetails">View Detail</a> 
<input name="processor" class="processor" type="text" value="19"> 
<input name="auth_code" class="auth_code" type="text" value="4"> 
</td> 
<td> 
<a href="$" class="buttonDetails">View Detail</a> 
<input name="processor" class="processor" type="text" value="9"> 
<input name="auth_code" class="auth_code" type="text" value="11"> 
</td> 
... 

然後我試圖獲取值:

$('.buttonDetails').live("click", function(){ 
    var processor = $('.processor').val(); 
    alert(processor); 

    $.ajax({ 
      type: 'POST', 
      dataType: 'json', 
      url: '/decline/list', 
      async: false, 
      data: { 
       processor: processor, 
       processor: auth_code 
       }, 
      success: function(json) { 
       $('#details').html(json.processor); 
      } 
    }); 
    return false; 
}); 

我遇到的問題是當我點擊任何鏈接時,我的警報獲得相同的數字(通常是第一個輸入的第一個值)。

有什麼想法可以解決這個問題嗎?我試過replacin類與id和「點擊」與「活」,但仍然沒有

編輯:

,我相信我需要區分類別,所以他聯繫就知道拉什麼價值..?

編輯:如果我想要'auth_code'也是什麼?

+0

你期望得到什麼?最接近按鈕的輸入值或與選擇器匹配的所有輸入的值是否連接? –

+0

我希望當我點擊任何鏈接從它旁邊的輸入中獲取值 – Patrioticcow

+0

看起來錯誤的原因是$('。processor')'正在用處理器返回所有*標記類(你有多個)。 http://api.jquery.com/class-selector/ 現在,作爲完整的披露,我不jQuery,但它似乎是如果你把在錨標籤,你可能能夠正確訪問它(作爲你的錨內的一個元素而不是類名)。 –

回答

4

嘗試:

$('.buttonDetails').live("click", function(){ 
    var processor = $(this).next(".processor").val(); 
    alert(processor); 
    /* snip */ 
}); 

使用next讓旁邊被點擊的鏈接輸入。


更新(由於評論)。

你可以使用類似的替代nextAll找到auth_code

var auth_code = $(this).nextAll(".auth_code").val(); 

此外,你確定你是提供給您的AJAX調用正確的價值觀?它看起來像指定processor兩次。爲processor指定的第一個值將被覆蓋。

+0

不錯,'處理器'現在工作正常,但'auth_code' doesnt,有什麼想法? – Patrioticcow

+0

@Patrioticcow:查看我的更新。應該像使用'nextAll'一樣簡單# –

+0

感謝所有,它工作正常 – Patrioticcow

1

如果你只是想下一個項目,你可以使用jQuery的旁邊()

$('.buttonDetails').live("click", function(){ 
    var processor = $(this).next().val(); 
    alert(processor); 
    return false; 

});

這裏是一個小提琴

http://jsfiddle.net/znge4/1/

0

你得到相同的值,而不論其錨標記被點擊,因爲這行:

var processor = $('.processor').val(); 

您正在搜索整個DOM的所有具有'processor'類的元素返回每個輸入,然後.val()將返回FIRST匹配的值(第一個輸入)。

試試這個:

var processor = $(this).next('.processor').val(); 
1
 data: { 
      processor: processor, 
      processor: auth_code 
      }, 

的 'AUTH_CODE' 線將覆蓋 '處理器' 行,有效地使只有

 data: { 
      processor: auth_code 
      }, 

它。在關聯數組/對象中不能有一個具有兩個不同值的鍵。要將同名字段提交給PHP,請使用其fieldname[]表示法,該表示法告訴PHP將該特定表單字段視爲數組。

<input name="processor[]" ...> 
<input name="processor[]" ...> 

,並通過

data : $(this).serialize() 
1

使用jQuery。接下來將數據傳遞給JQuery的(),它應該給你的下一個元素

0

所有你需要做的是從元件獲得的價值他們點擊。使用Jquery的'this'關鍵字應該可以解決你的問題。

$('.buttonDetails').live("click", function(){ 
var processor = $(this).next().val(); 
alert(processor); 

的「本」將選擇「A」,他們點擊了,那麼下一個會遍歷到下一個兄弟,在這種情況下你的輸入,以及VAL像以前一樣檢索值。

相關問題