0

SO の誰かが、ドロップダウンで選択した選択に基づいて非表示の行を表示する選択ボックス用のこのスクリプトを作成するのを手伝ってくれました

function showNext(opt)  {
    takeAway()
    var optMap={
        "Picked Up":"#pickedup",
        "Bus to alternate":"#altad2,#altad1",
        "Walk to alternate":"#altad2,#altad1",
    }
    $(optMap[opt]).css("display","") ;
}

function takeAway(){
    $("#pickedup,#altad2,#altad1").css("display", "none");
}

これが onload で実行するためにも機能するものが必要なので、何かが既に選択されている場合は行が表示されます

スクリプトの影響を受ける選択は次のとおりです

<tr class="~[evenoddrow]"> 
            <td class="bold">In the event of early dismissal I would like my child to:</td><td id="Emergclose_Action">~([01]Emergclose_Action)</td><td class="gwCen"></td>
            <td><select name="eReg|Emergclose_Action" id="eReg|Emergclose_Action" onChange="showNext(value);">
                    <option></option><option value="Walk home as normal">Walk home as normal</option><option value="Ride the bus as normal">Ride the bus as normal</option>
<option value="Picked Up">Be picked up immediately after dismissal</option><option value="Bus to alternate">Ride the bus to an alternate address</option><option value="Walk to alternate">Walk to an alternate address</option>
                </select>           
            </td>
        </tr>

私は次のことを試しましたが、うまくいきませんでした..

function showNext(opt)  {
        takeAway()

      var optMap={
             "Picked Up":"#pickedup",
             "Bus to alternate":"#altad2,#altad1",
             "Walk to alternate":"#altad2,#altad1",
              }
           $(optMap[opt]).css("display","") ;       

}
function takeAway(){
    $("#pickedup,#altad2,#altad1").css("display", "none");
 }
$(function(){
   $('#eReg|Emergclose_Action').trigger('onchange');
});
4

2 に答える 2

0

onChange="showNext(value);"select 要素から削除して、id を変更してみてください。|セレクターにパイプを使用することはお勧めできません。回避策が必要です。パイプを使用しない方が簡単です。_代わりにアンダースコアに置き換えてください。

したがって、選択用のhtmlは次のとおりです。

<select name="eReg|Emergclose_Action" id="eReg_Emergclose_Action">

次に、次のように JavaScript を実行します。

$(function(){

   //anything in here will run after the page loads

   //assign showNext to the change event
   $('#eReg_Emergclose_Action').change(function(){
      showNext($(this).val());
   }).change();//manually trigger the change event after its attached

});
于 2013-02-21T19:20:54.563 に答える
0

誰かが以前に「はい」を選択した場合にページの読み込み時に実行する必要があるスクリプトは、Jquery を使用して以下のように最適化できます。

$('#eReg|Emergclose_Action').trigger('onchange');

于 2013-02-21T19:37:37.587 に答える