2017-10-18 32 views
0

我收到以下錯誤設置屬性。不能在JavaScript形式

我看不到我做錯了什麼。我打算設置變量,我可以將其傳遞給後端php腳本,然後該腳本將提交請求以對搜索結果進行排序。這應該很簡單,但我不確定問題是什麼。

如何設置這些變量以便我可以提交表單?

HTML:

<div class="sort"> 
    <form name="loop54" action="cart.php" target="_self" method="get"> 
    <select id="sortBy"> 
     <option value="Rel" selected="selected">Relevance</option> 
     <option value="PriceLoHi">Low to High</option> 
     <option value="PriceHiLo">High to Low</option> 
     <option value="A-Z">A-Z</option> 
     <option value="Z-A">Z-A</option> 
    </select> 
    </form> 
</div> 

的JavaScript:

var selectmenu = document.getElementById("sortBy"); 
selectmenu.onchange=function() { 
    var selectedOption = this.options[this.selectedIndex]; 
    document.loop54.target="_self"; 
    document.loop54.sort = selectedOption; 

    // the line below refers to another form and works 
    document.loop54.search = document.ds_search.search.value; 
    document.loop54.submit(); 
} 

我創建了一個jsfiddle和它的作品出現。在其他地方一定是個問題。

+0

你能描述一下你想要做什麼嗎?還有,你認爲'ds_search'是在'document'裏面? –

回答

0

必須設置爲<select id="sortBy">元素name屬性:

<select id="sortBy" name="sort"> 
0

如果你想使用HTML表單將數據發送到你的PHP腳本,你不應該操縱代表HTML表單的JavaScript對象。

HTML表單的行爲是這樣的:如果它包含着名稱參數字段(值輸入標籤,有選擇的選項中選擇標籤),他們將在HTTP請求發送,在數組,其中:

  • 的字段的名稱是進入
  • 字段的值,是

因此,而不是做你做什麼,你應該:

  • 添加一個名爲「搜索」的一個輸入文本字段,用戶將輸入他的搜索查詢

  • 名稱參數添加到您的選擇

下面是它會是什麼樣子:

var selectmenu = document.getElementById("sortBy"); 
 
selectmenu.onchange= function() { 
 
    // you can keep using JavaScript to submit your form, but select your form with its id : 
 
    document.getElementById("loop54").submit(); 
 
}
<div class="sort"> 
 
    \t <form id="loop54" pname="loop54" action="cart.php" target="_self" method="get"> 
 
    \t <select id="sortBy" name="sortBy"> 
 
    \t \t <option value="Rel" selected="selected">Relevance</option> 
 
    \t \t <option value="PriceLoHi">Low to High</option> 
 
    \t \t <option value="PriceHiLo">High to Low</option> 
 
    \t \t <option value="A-Z">A-Z</option> 
 
    \t \t <option value="Z-A">Z-A</option> 
 
    \t </select> 
 
    \t <input type="text" name="search_ds"></input> 
 
    \t </form> 
 
    </div>

這樣,您應該在服務器端使用包含每個字段的鍵/值的$ _GET變量:sortBy和search。