2011-12-02 57 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像以前一样检索值。

相关问题