无法更新jQuery中的文本框值

时间:2014-08-28 09:36:18

标签: javascript jquery ajax

我尝试更新三个不同表行中三个文本框的值,但它只更新一行中的一个文本框值。我要分享我的代码,请指导我。

HTML:

<table>
<tr>
    <td>
      <input class="ppp" type="text" id="ItemBuyingPrice0" value="10" style="width:55px;" />
    </td>
    <td>
      <input type="text" id="Itembpusd0" readonly value="1.22" style="width:50px;" />
    </td>
</tr>
<tr>
    <td>
      <input class="ppp" type="text" id="ItemBuyingPrice1" value="10" style="width:55px;" />
    </td>
    <td>
      <input type="text" id="Itembpusd1" readonly value="1.22" style="width:50px;" />
    </td>
</tr>
<tr>
    <td>
      <input class="ppp" type="text" id="ItemBuyingPrice2" value="10" style="width:55px;" />
    </td>
    <td>
      <input type="text" id="Itembpusd2" readonly value="1.22" style="width:50px;" />
    </td>
</tr>
</table>

jQuery的:

var BindBPCustom = function (id, BPUSD) {
    var errormsg = "";
    var amount = $(id).val();
    var country21 = $('#CurrencyValue').val();    
    $.ajax({
        type: "GET",
        url: cc,
        data: { amount: amount, country: country21 },
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            $(BPUSD).val(data);
        },
        error: function (jqXHR, exception) {            
        }
    });
}
$(".ppp").on("keydown", function () {
    var cnt = 0;
    var bp = $("#ItemBuyingPrice" + cnt);
    var converted = $("#Itembpusd" + cnt);
    cnt++;
    BindBPCustom(bp, converted);
    alert(cnt);
});

我想更改ItemBuyingPrice0,1,2中输入的每个相应文本的每个Itembpusd0,1,2值。目前它只是改变一个文本框值,如果我输入ItemBuyingPrice0它正在改变Itembpusd0值,但我想在其他文本框中也这样。请指导我

5 个答案:

答案 0 :(得分:1)

您可以在事件处理程序中使用this来引用该元素。您可以使用jquery选择器访问下一个文本框,如下所示:

$(".ppp").on("keydown", function () {
  //var bp = $("#ItemBuyingPrice" + cnt); this can be replaced with $(this)
   var converted = $(this).parent().next().find("input");
   BindBPCustom($(this), converted);
   alert(cnt);
});

答案 1 :(得分:1)

我认为你让事情变得更复杂。

Example in jsfiddle

var BindBPCustom = function (id, BPUSD) {
    var errormsg = "";
    var amount = $(id).val();
    var country21 = $('#CurrencyValue').val();    
    $.ajax({
        type: "GET",
        url: cc,
        data: { amount: amount, country: country21 },
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            $(BPUSD).val(data);
        },
        error: function (jqXHR, exception) {            
        }
    });
}
$(".ppp").on("keydown", function () {

    var bp = $(this);

    var eletoUpdate = bp.parent().siblings('td').find('input:text');

    BindBPCustom(bp, eletoUpdate);

});

答案 2 :(得分:0)

我可能会遗漏一些东西,但你需要一个for循环吗?

$(".ppp").on("keydown", function () {


    for(var cnt = 0; cnt <2;cnt ++){

        var bp = $("#ItemBuyingPrice" + cnt);
        var converted = $("#Itembpusd" + cnt);
        cnt++;
        BindBPCustom(bp, converted);
        alert(cnt);
   }
}

});

答案 3 :(得分:0)

来自文档

  

“json”:将响应计算为JSON并返回一个JavaScript对象。

所以,您的data是一个对象,并将其传递给val(),您需要stringify

  $(BPUSD).val(data.stringify());

答案 4 :(得分:0)

您没有循环,因此它只会更新#ItemBuyingPrice0。

放入循环或使用类选择器:

将类购买价格放在您想要更新的输入上,即:

<input class="buyingprice" type="text" id="Itembpusd0" readonly value="1.22" style="width:50px;" />

然后更新:

$(".ppp").on("keydown", function () {
    $(".buyingprice").each(function(){
        BindBPCustom($(this), converted);
    });
});