。我有一辆不合作的推车。点击结帐按钮时,除了提交表单外,还需要从每行的字段中将一些代码发送回我的服务器。
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并用它来精确定位字段,也没有用。即 $( '#结帐')。点击(函数(){
$('.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;
答案 0 :(得分:1)
你几乎在那里Jeremy,
当您遍历每一行时,您需要找到每个子元素。目前,当您遍历每一行时,您正在使用 $('。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);
});
});