0

.我有一辆不合作的推车。当点击结帐按钮时,除了提交表单之外,它还需要将一些代码发送回我的服务器,这些代码是从每一行的字段中提取的。

HTML(简化版)

<div class="row">
<input type="text" readonly="readonly" class="pp_name" value="Sample product">
<input type="hidden" class="pp_id" value="1234">
<input type="hidden" class="pp_stock" value="5">
</div>

<div class="row">
<input type="text" readonly="readonly" class="pp_name" value="Another item">
<input type="hidden" class="pp_id" value="7456">
<input type="hidden" class="pp_stock" value="2">
</div>

<div class="row">
<input type="text" readonly="readonly" class="pp_name" value="Some other thing">
<input type="hidden" class="pp_id" value="9121">
<input type="hidden" class="pp_stock" value="3">
</div>

<input type="submit" value="Checkout" id="checkout">

我需要在提交时输出的脚本(它向我的服务器发送每个项目的更新库存计数,从 API 库调用函数):

$('#checkout').click(function(){

$('.row').each(function(){
var itemId = $('.pp_id').val;
var fieldId = 100;       // This var is a constant, static value
var newStockcount = $('.pp_stock').val;
setapikey(1234567890);
setMetadata( itemId, fieldId, newValue, );
});

});

我在编写此脚本时尝试的每一个变体都无法获取每行中字段的值。setMetadata 函数没有任何问题,我在无数站点上使用它都没有问题。它只是从不起作用的字段中为其提供变量。

即使我为每一行设置一个 ID 并使用它来精确定位字段,也不好。即 $('#checkout').click(function(){

$('.row').each(function(){

$(this).attr('id', 'active_checkout_row'); //SET ID

var itemId = $('.pp_id').val;
var fieldId = 100;
var newStockcount = $('.pp_stock').val;
setapikey(1234567890);
setMetadata( itemId, fieldId, newValue, );

$(this).attr('id', 'inactive_checkout_row'); //UNSET ID

});

我已经做了两天了,所以如果有帮助的人能告诉我哪里出错了,我将不胜感激。

即使使用以下方法也不会产生任何结果:

var anyVariable = document.getElementById('active_checkout_row').getElementsByClassName('pp_name').value;
4

1 回答 1

1

你快到了杰里米,

当您遍历每一行时,您需要找到每个子元素。目前,当您遍历每一行时,您正在使用$('.pp_id')进行全局搜索,但您真正想要做的是找到.pp_id,它是您所在行的子行。

此外,在 jQuery 中,您需要使用括号调用.val()来获取实际值。

这是获取所需内容的jsFiddle

HTM 保持不变。

JS:

$('#checkout').click(function(){

    $('.row').each(function(){
    var itemId = $(this).find('input.pp_id').val();
    var fieldId = 100;       // This var is a constant, static value
    var newStockcount = $(this).find('input.pp_stock').val();
        console.log('itemid:'+itemId+' fieldId:'+fieldId+' newStockcount:'+newStockcount);
    });

});
于 2013-03-10T03:42:35.787 回答