2016-07-02 24 views
-1

チェックボックスを含むフォームを使用しようとしていますが、送信時にフォームがGETを介して選択を送信します。私の問題は、私のプロジェクトでPHPとJavaScriptのみを使用してこれらの値を処理する必要があることです。添付されたスクリプトを使用すると、最初のスクリプトではなく最後のスクリプトのみが処理されます。下のチェックボックスを持つフォームれる:Javascript - チェックボックスと値の受け渡しGET(PHPなし)

<fieldset id="fruitsVegetables[]"> 
    <div class="foodObject"> 
     <b>Fresh Baby Carrots</b><br> 
     <input class="pepLightCheckboxinput" id="BabyCarrots" type="checkbox" name="fruitsVegetables[]" value="BabyCarrots"> 
     <label for="BabyCarrots"> 
      <span><span></span></span>Choose 
     </label> 
    </div> 

    <div class="foodObject"> 
     <b>Assorted Fresh Fruit</b><br> 
     <input class="pepLightCheckboxinput" id="AssortedFruit" type="checkbox" name="fruitsVegetables[]" value="AssortedFruit"> 
     <label for="AssortedFruit"> 
      <span><span></span></span>Choose 
     </label> 
    </div> 

    <div class="foodObject"> 
     <b>Assorted Fruit Cups</b><br> 
     <input class="pepLightCheckboxinput" id="AssortedFruitCups" type="checkbox" name="fruitsVegetables" value="AssortedFruitCups"> 
     <label for="AssortedFruitCups"> 
      <span><span></span></span>Choose 
     </label> 
    </div> 
</fieldset> 

ここでは、私は、変数を処理するために使用しています私の既存のJavascriptです:

var fruitsVegetables1 = getUrlVars()["fruitsVegetables[]"]; 
var fruitsVegetables2 = getUrlVars()["fruitsVegetables[]"]; 

function getUrlVars() { 
    var vars = {}; 
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { 
     vars[key] = value; 
    }); 
    return vars; 
} 

console.log(fruitsVegetables1); 
console.log(fruitsVegetables2); 
+0

最後の項目に悪い名前があります。[]]がありません – moped

答えて

1

JavaScriptオブジェクトは、指定されたプロパティ名のために一つだけの特性を持つことができます。つまり、「fruitsVegetables []」という名前のプロパティを1つしか持てないため、同じ値のkeyに対して2回目にvars[key] = valueが呼び出されると、以前に設定された値が置き換えられます。

代わりに配列を返すように関数を変更する必要があります。また、指定されたパラメータ名の値の配列でもかまいません。

var fruitsVegetablesArray = getUrlParamValues("fruitsVegetables[]"); 

function getUrlParamValues(paramName) { 
    var values = []; 
    window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { 
     if (key == paramName) { 
      values.push(value); 
     } 
    }); 
    return values; 
} 
+1

ありがとうございました!それはうまくいった! – rctfan1999

関連する問題