-1

少し状況があります。基本的に、選択ボックスの変更時に入力している JavaScript 配列に項目を追加しています。しかし、問題は、0 を入力すると、配列から削除する必要があることです。

ここにコードがあります

var addon = new Array();
function updateAddons(){
    addon.length=0;

    var plan = new Array;
    var planQty = new Array;

    plan.length=0;
    planQty.length=0;

    for(var j =0 ; j< 3; j++){
        $("select[name='addon_"+j+"[]'] option:selected").each(function(){
            var item = {
                product_name : $(this).attr('pn'),
                product_cost : $(this).attr('cost'),
                product_id : $(this).val()
            };
            if(item.product_id != 0){
                plan.push(item);
            }
        });
        $("input[name='addonQty_"+j+"[]'] ").each(function(){
            if($(this).val() != 0){
                planQty.push($(this).val());
            }
        });
    }

    for(var i =0; i < plan.length; i++){
        var item = {
            product:plan[i],
            product_qty:planQty[i]
        }
        if(item.product.product_id != 0){
            addon.push(item);
        }

    }

}

jsfiddle を作成しました。ここをクリックして表示してください。(完全なオブジェクトについては、ブラウザ コンソールを確認してください。)

誰かが助けることができれば。そして、あなたの答えを説明してください。

よろしく

4

2 に答える 2

0

自分で解決しました。0の代わりに任意の数値を入力し、最終的な配列には追加しません。

ありがとう

于 2013-01-19T05:15:30.603 に答える
0

コードの主な問題は、次のステートメントです。

 if($(this).val() != 0)

問題は、入力が空の場合、値はundefinedです。javascriptでは。undefinedと等しくありません0。これを解決する簡単な方法は、未定義もテストすることです。

 if($(this).val() != 0 && $(this).val() != undefined)
于 2013-01-19T05:16:25.757 に答える