2013-02-18 35 views
0

我做了與PHP的下拉菜單,工作正常。當所選項目改變時,我調用函數changePeriod()。錯誤的JavaScript函數,以獲取值的靜態PHP下拉

$options[0] = '--period--'; 
$options[1] = 'Daily'; 
$options[2] = 'Weekly'; 
$options[3] = 'Monthly'; 

<td><?php echo form_dropdown('period', $options, '0', 'id="period" onchange="changePeriod()"'); ?></td> 

在這裏您可以看到上面代碼導致的HTML源代碼。

<td> 
    <select name="period" id="period" onchange="changePeriod()"> 
     <option value="0" selected="selected">--period--</option> 
     <option value="1">Daily</option> 
     <option value="2">Weekly</option> 
     <option value="3">Monthly</option> 
    </select> 
</td> 

在這個函數中我需要得到所選擇的項的值,但2警報的開關兩者以上得到未定義作爲結果。有沒有人有一個想法,爲什麼我得到未定義,而不是選定的選項的值?它與從數據庫中填充foreach的動態下拉菜單一起工作。

function changePeriod() { 
    alert(document.getElementById("period").selectedIndex); 
    alert(document.getElementById("period").value); 

    switch (document.getElementById("period").selectedIndex) { 
     case 1: 
      alert("daily"); 
      break; 
     case 2: 
      alert("weekly"); 
      break; 
     case 3: 
      alert("monthly"); 
      break; 
    } 
} 

基本上是:爲什麼我不能獲得所選擇的選項的值,我怎麼能解決這個問題?

感謝您的幫助。

+0

$("#period").change(function(){ alert("The Value: "+$(this).val()); switch ($(this).val()) { case 1: alert("daily"); break; case 2: alert("weekly"); break; case 3: alert("monthly"); break; } }); 

看看嗎? – 2013-02-18 18:42:37

+1

'form_dropdown()'生成的HTML是什麼? – bfavaretto 2013-02-18 18:43:52

+0

你能告訴我們form_dropdown函數是什麼樣子,並且很好通過DeveloperTools或類似的(取決於你的瀏覽器)檢查表單,以確保句號正確地被注入到DOM中 – Offbeatmammal 2013-02-18 18:45:26

回答

0

是這樣生成的HTML:

<select onchange="changePeriod()" id="period"> 
     <option value="0">--period--</option> 
     <option value="1">Daily</option> 
     <option value="2">Weekly</option> 
     <option value="3">Monthly</option> 
    </select> 
    <script type="text/javascript"> 
     function changePeriod(event) { 
      alert(document.getElementById("period").selectedIndex); 
      alert(document.getElementById("period").value); 

      switch (document.getElementById("period").selectedIndex) { 
       case 1: 
        alert("daily"); 
        break; 
       case 2: 
        alert("weekly"); 
        break; 
       case 3: 
        alert("monthly"); 
        break; 
      } 
     } 
    </script> 

如果是,它爲我工作。

爲什麼你不使用jQuery,你可以用更少的代碼做所有事情。

編輯:

使用jQuery的解決方案:你爲什麼不使用jQuery http://jsfiddle.net/rfWjd/

+0

我第一次嘗試這樣的事情。 function changePeriod(){alert($('period').val())}但它有相同的結果。 – Lewis 2013-02-18 19:05:21

+0

@ user2066100應該是'alert($('#period').val())',這樣你就可以通過ID來查看了,但是不需要jQuery – 2013-02-18 19:07:12

+0

@JuanMendes jQuery從不需要,因爲它不過是javascript,但它很有用,可以節省很多時間。 – walter 2013-02-18 21:35:13