2013-10-20 76 views
-1

我有一個具有選擇輸入的表單。它的方法是GET。多個選擇值和GET字符串

<form method="get" action="index.php"> 
<select name="select[]" multiple> 
    <option value="0">Option1</option> 
    <option value="1">Option2</option> 
    <option value="2">Option3</option> 
    <option value="3">Option4</option> 
    <option value="4">Option5</option> 
</select> 
</form> 

如果我選擇選項2和4的URL看起來像:mydomain.com/index.php?select[]=2 &選擇[] = 4

我希望它看起來像(最好不帶方括號)

mydomain.com/index.php?select=2+4

我懷疑我需要爲這個客戶端的解決方案,但我不知道任何JavaScript。或者首先加載一個頁面來改變這些值,然後重定向到一個帶有頁眉的新頁面(location:'')?

+0

如何網址'看起來'應該無關緊要記 – 2013-10-20 21:58:22

+2

這並不是如何工作。 '?select = 2 + 4'意味着一個輸入值爲「2 4」。讓表單提交按照設計工作的原理工作有什麼問題?這是一個非常好解決的問題,你試圖搞砸它。 – meagar

+0

你是對的,它應該保持原樣。然而,即便是我想要達到的好奇心的事實。 – Pepe

回答

1

這似乎是你的意圖是總結價值和返回(6),而不是(4 + 2)。下面的代碼片段都可以做到,使用你想要的,並廢除其他。

<form method="get" action=""> 
    <select multiple id="selector"> 
     <option value="0">Option1</option> 
     <option value="1">Option2</option> 
     <option value="2">Option3</option> 
     <option value="3">Option4</option> 
     <option value="4">Option5</option> 
    </select> 
    <input type=hidden name=select1 value=0 id=hiddenSelect1> 
    <input type=hidden name=select2 value=0 id=hiddenSelect2> 
    <input type=button onclick=showw();> 
    <input type=submit onclick="return sumValues();"> 
</form> 


<script> 
    function sumValues() 
    { 
     var values = $('#selector').val(); 
     if (values === null) 
     { 
      $('#hiddenSelect1').val(""); 
      $('#hiddenSelect2').val(0); 
     } 
     else 
     { 
      var valstring = values.join("+"); 
    //string (1+2+...) 
      $('#hiddenSelect1').val(valstring); 
//actually sum them 
      var sum = 0; 
      values = valstring.split("+"); 
      for (var i = 0, len = values.length; i < len; i++) 
      { 
       sum += parseFloat(values[i]); 
      } 
      $('#hiddenSelect2').val(sum); 
     } 
     return true; 
    } 

</script> 
+0

Thx爲您的答案。我不想將它們總計爲6,但顯示爲4 + 2,因此代碼的最後一部分不適用。但是,您對代碼給出了一些說明:1)同一表單中還有其他輸入類型,因此調用sumValues將跳過其他輸入字段。 2)我需要一個action = example.php,因爲它需要加載新頁面 – Pepe

+0

這個東西應該只是一個起點。聽起來你知道你想用它做什麼,嘗試和修改這裏提出的JS以適應你想要的。 「hiddenSelect1」中的值實際上就是你想要的值,如果你選擇4和2,那麼它就會是「4 + 2」,所以如果你不需要它的話,擦除求和代碼,把動作改爲正確的.php等等。 – chiliNUT

+0

好的。非常感謝你的幫助 – Pepe