0

正常に動作するPHPでドロップダウンを作成しました。選択したアイテムが変更されたら、関数 changePeriod() を呼び出します。

$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 つのアラートはどちらも結果としてUndefinedを返します。選択したオプションの値ではなく、未定義になる理由を誰かが知っていますか? データベースからの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;
    }
}

基本的に:選択したオプションの値を取得できないのはなぜですか?どうすれば修正できますか?

助けてくれてありがとう。

4

1 に答える 1

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 を使用したソリューション:

$("#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;
        }
});

ここを見てください:http://jsfiddle.net/rfWjd/

于 2013-02-18T18:57:45.803 に答える