2017-06-16 73 views
-3

當$ _GET從表單中選擇標記什麼是返回值。根據我在做什麼,我認爲它會返回一個整數(1 - 選項),但我想諮詢一些更加了解這個主題的人。有沒有辦法讓選擇的字符串被選中?

+0

如果你確保你的選擇有一個屬性值,你得到的屬性 – scrappedcola

+1

的增值代碼將真正幫助我們理解你的問題和問題 –

+0

如果一個表單有一個SELECT標記並且它被選中,並且你發佈表單,那麼$ _GET會給你包含SELECT ELEMENT NAME AS ARRAY KEY和SELECT ELEMENT VALUE作爲數組值的數組,例如array('select'=> 'value') –

回答

0

the specification

如果字段元素是一個select元素,然後在選項,其selectedness是真實的,沒有被禁用的選擇元素的列表中的每個選項元素,追加到表格中的條目以name作爲名稱的數據集,作爲值的option元素的值,以及作爲類型的type。

這是選擇的選項元素的值。索引將永遠不會被髮送,除非它們碰巧與該值相同。

+0

你在混合'select'部件與'多選',這造成更多的混亂 – MaxZoom

+0

@MaxZoom - 不,我不是。選擇元素的工作方式與使用或不使用'multiple'屬性相同。唯一的區別是可以選擇的選項數量。 – Quentin

0

它返回所選選項的值。

<select name="someFilter"> 
    <option value="food">Food</option> 
    <option value="drink">Drink</option> 
</select> 

所以,在這種情況下$_GET['someFilter']將返回fooddrink

0

如果沒有選擇任何值作爲選擇值,表單將發送選定的選項值或第一個選項。
您可以選擇以下實驗,並提交按鈕,看看效果:

var form = document.forms['myForm'], 
 
    select = form.querySelector('select'), 
 
    button = form.querySelector('input[type=submit]'); 
 

 
select.addEventListener('change', function() { 
 
    console.log('Selected value is ' + this.value) 
 
}); 
 

 
button.addEventListener('click', function(e) { 
 
    e.preventDefault(); 
 
    var data = new FormData(form); 
 
    var field = 'selection'; 
 
    console.log('Form will send ' + data.getAll(field) + ' for ' + field); 
 
    var label = select.querySelector('option[value="' + data.getAll(field) + '"]').innerHTML; 
 
    data.set(field, label) 
 
    console.log('But we can change it to label: ' + data.getAll(field)); 
 
});
<form name='myForm'> 
 
    <label for='selection'>Select something:</label> 
 
    <select name="selection"> 
 
    <option value='0'>---</option> 
 
    <option value='1'>First</option> 
 
    <option value='2'>Second</option> 
 
    <option value='3'>Third</option> 
 
    </select> 
 
    <br/><br/> 
 
    <input type='submit' value="submit" /> 
 
</form>