2012-03-29 71 views
0

我最近遇到這樣的:HTML:元素的多個名稱/值?

  • <form method="get" action="/somewebdir/script.php"> 
        <input type="radio" name="param0" value="foo" /> 
        <input type="radio" name="param1" value="foo" /> 
        <input type="radio" name="param2" value="bar" /> 
        <input type="radio" name="param2" value="bar" checked="checked" /> 
    </form> 
    

我很好奇,如果有發送多個鍵/值,如果第二個參數2被髮送,沒有任何JS的方式。
因此,該頁面會導致對類似:

  • http://domain/somewebdir/script.php?param2=bar&param3=foobar

我的值改爲從"bar""bar&amp;param3=foobar",但很明顯的特殊字符(&=)會編碼。

任何想法? (再次W/O JS)


隱藏的元素不會因爲它的工作將始終發送參數,這將對其他事情產生負面影響被稱爲由處理器(運行script.php)

+0

您可以通過名稱和值添加隱藏的輸入其他參數將在表單提交時發送。但是這將始終發生,無論哪個單選按鈕被檢查。 – Stefan 2012-03-29 19:28:22

+0

@Stefan:正是:),試圖避免這一點。想象一下,「script.php」確實是一個處理程序,在最好的情況下,它會混亂地址欄,最糟糕的情況是它會影響內容。在這種情況下,我試圖創建一個簡單的'debug'單選按鈕。現在,我設置了複選框,但爲了讓用戶更清楚,我想創建一個調試列,與之前的單選按鈕完全相同,但是添加了'debug = 1'(或類似的參數) – vol7ron 2012-03-29 20:06:51

+0

沒有辦法做到這一點沒有JavaScript。您還可以將單選按鈕組分成​​兩種形式,第二種形式有一個額外的'param3'輸入,其值爲'foobar',但是您將無法使用一個按鈕提交這兩個表單。 – Stefan 2012-03-29 21:20:23

回答

2

不,不能這樣做。相反,從服務器端執行它(如在,期望輸入,並且如果到達則相應地執行)。如果它不是來自用戶,那不是用戶輸入!

如果您需要每個用戶的特定值,您可以使用隱藏輸入,並使用單選按鈕進行交叉檢查。

<input type="hidden" name="param3" value="value here"> 
+0

可能會選擇這個,因爲'不,它不能做' – vol7ron 2012-03-29 20:13:34

1
然後在服務器側處理所述第三參數之前

<input type="hidden" name="param3" value="foobar" /> 

,檢查是否所述第二值是「開」(選中):

可以傳遞的第三參數作爲隱藏元件。

如果服務器端腳本(script.php)超出了你的控制範圍,並且當且僅當給出了第二個參數時需要傳遞第三個參數,那麼沒有JS就沒有運氣了。

1

通常遊戲,你會使用一個自定義的分隔符,解析它在服務器上:

<input type="radio" name="param2" value="bar|happy|friday" checked="checked" /> 
0

只要標記的名稱是不同的,他們將獲得通過爲$ _GET或$ _POST陣列的不同元素...