2012-05-26 46 views
0

我的問題是選擇值,該值是
<option selected="selected" disabled="disabled">Select a city...</option>
的問題是:儘管沒有值這個選項,PHP代碼認爲其值作爲*'選擇一個城市'*。所以,即使沒有選擇一個城市,我的代碼if(isset($_POST['city'])也會一直返回。我該如何解決這個問題?<選項選擇=「選擇」>文本</option>返回總是儘管不具有值的值

這裏是HTML代碼:

<form id="city_form"> 

    <select id="city" name="city"> 
    <option selected="selected" disabled="disabled">Select a city...</option> 
    <option value=1 name="city1">City 1</option> 
    <option value=2 name="city2">City 2</option> 
    <option value=3 name="city3">City 3</option> 
    <option value=4 name="city4">City 4</option> 
    </select> 

    <input type="submit" value="Submit form" id="submit_button" /> 

</form> 
<div id="show_city"></div> 

這裏是的jquery代碼:

$('#submit_button').click(function(e) { 
    e.preventDefault(); 
    var data = $('#city_form').serialize(); 
    $.post(
     "fetch_city.php", 
      data, 
      function (response) { 
      $('#show_city').html(response); 
      } 
     ); 
}); 

這裏是fetch_city.php

if (isset($_POST['city']) && !empty($_POST['city'])) { 

    $city_id = $_POST['city']); 
    echo $city_id; 

} else { 
    echo "You did not select a city...!"; 
} 
+0

fyi'!empty'意味着'isset',所以如果你測試'!empty' – ThiefMaster

+0

和$ city_id =(int)$ _POST ['city']),你就不會'isset'。 –

回答

4

你不行。給它一個有意義的哨兵value,並忽略控制,如果該值出現。

<option selected="selected" disabled="disabled" value="">Select a city...</option> 
+2

原因是因爲如果一個選項沒有'value'屬性,那麼它內部的文本將被用作'value'。 –

0

我想這裏的答案是jquery忽略了第一個選項的殘疾人。嘗試從中刪除selected =「selected」和disabled =「disabled」。您現在將看到一個空白的第一個條目。當表單提交時,你的isset應該返回false。