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 関数に問題はありません。無数のサイトで問題なく使用しています。機能しないフィールドから vars を供給するだけです。

行ごとに 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

});

私は 2 日間それを行ってきたので、私が間違っているところを教えてくれる人がいるなら、とても感謝しています.

以下を使用しても結果は得られません。

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 に答える