如何从生成的文本输入中获取值?

时间:2011-12-02 17:49:46

标签: php javascript jquery post click

我在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;
});

我遇到的问题是,当我点击任何链接时,我的提醒会获得相同的号码(通常是第一个输入的第一个值)。

任何想法都要解决这个问题?我已经尝试了带有id的“替换”类和“实时”的“点击”,但仍然没有

编辑:

我相信我需要区分这些类,所以他的链接会知道要拉什么值。??

编辑:如果我想获得'auth_code'怎么办?

6 个答案:

答案 0 :(得分: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();

processor

另外,您确定要为AJAX通话提供正确的值吗?看起来您要指定processor两次。为{{1}}指定的第一个值将被覆盖。

答案 1 :(得分:1)

如果您只想要下一个项目,可以使用jquery next()

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

});

这是一个小提琴

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

答案 2 :(得分:1)

        data: { 
            processor: processor,
            processor: auth_code
           },

'auth_code'行将覆盖'处理器'行,实际上是

        data: { 
            processor: auth_code
           },

只。在关联数组/对象中,不能有一个具有两个不同值的键。要向PHP提交同名字段,请使用其fieldname[]表示法,告诉PHP将该特定表单字段视为数组。

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

并通过

将数据传递给JQuery
data : $(this).serialize()

答案 3 :(得分:1)

使用Jquery .next(),它应该为您提供下一个元素

答案 4 :(得分:0)

无论因为这一行而点击了哪个锚标记,都会获得相同的值:

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

您正在整个DOM中搜索具有类'processor'的所有元素,它返回每个输入,然后.val()将返回FIRST匹配的值(第一个输入)。

请改为尝试:

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

答案 5 :(得分:0)

您需要做的就是从他们点击的元素中获取值。使用Jquery&#39;这个&#39;关键字应该可以解决您的问题。

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

&#39; this&#39;将选择&#39; a&#39;他们点击了,然后接下来将迭代到下一个兄弟,在这种情况下你的输入,并且val像以前一样检索那个值。