0

私のコード:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>TEST</title>
</head>

<body>
    How can I get the code to fire on load, maintaining the change/keypress?<br/>
<select id="textFieldId" name="textFieldId">
    <option value="1">End Date</option>
    <option value="2">End Date Plus 30</option>
    <option value="3">End Date Plus Custom</option>
    <option value="4">Print Date Plus Custom</option>
    <option value="5">Static Expiration Date (New)</option>
</select>
    <pre id="ONE">If user selects 1</pre>
    <pre id="TWO">If user selects 2</pre>
    <pre id="THREE">If user selects 3</pre>
    <pre id="FOUR">If user selects 4</pre>
    <pre id="FIVE">If user selects 5</pre>
</body>
</html>


$(document).ready(function(){
    $("#textFieldId").val("3").change();
    $("#textFieldId").on("change keyup", function(){
        var selectedVal = $(this).val();
        $("pre").hide();
        if(selectedVal == "1"){
            $("pre#ONE").show();
        }
        else if(selectedVal == "2"){
            $("pre#TWO").show();
        }
        else if(selectedVal == "3"){
            $("pre#THREE").show();
        }
        else if(selectedVal == "4"){
            $("pre#FOUR").show();
        }
        else{
            $("pre#FIVE").show();
        }
        return false;
    });
});

ここでJSfiddle

  1. ページには、change/keyup イベントがバインドされたドロップダウン リストがあります
  2. ユーザーがマウスまたは上下矢印キーで値を選択して、ページ上のレイヤーを表示/非表示にします

私の質問は、リストの選択された値を設定するだけでなく、バ​​インドされた関数を起動できる組み込み関数が jQuery 内にあるかどうかです。

回避策があります。それは、独自の機能でレイヤーの表示/非表示を削除し、変更/キーアップおよび初期ロード時にそれを起動することです。

それが最善の方法ですか?

4

2 に答える 2

0

switch を実行して、それにバインドされている関数を呼び出すことができます

フィドルのデモ

$(document).ready(function(){
    $("#textFieldId").val("3").change();
    $("#textFieldId").on("change keyup", myFunction);
});

function myFunction(){
    var selectedVal = $(this).val();
    $("pre").hide();
    $("#id" + selectedVal).show();
    switch(selectedVal){
        case "1":
            //call a function
        break;
        case "2":
            //call a function
        break;           
    }       
    return false;
}

HTML - preID を少し変更

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>TEST</title>
</head>

<body>
    How can I get the code to fire on load, maintaining the change/keypress?<br/>
<select id="textFieldId" name="textFieldId">
    <option value="1">End Date</option>
    <option value="2">End Date Plus 30</option>
    <option value="3">End Date Plus Custom</option>
    <option value="4">Print Date Plus Custom</option>
    <option value="5">Static Expiration Date (New)</option>
</select>
    <pre id="id1">If user selects 1</pre>
    <pre id="id2">If user selects 2</pre>
    <pre id="id3">If user selects 3</pre>
    <pre id="id4">If user selects 4</pre>
    <pre id="id5">If user selects 5</pre>
</body>
</html>
于 2012-08-25T03:55:35.757 に答える
0

より少ないコードでこれを試してくださいJSFIDDLE

$(document).ready(function(){
    // INITIAL LOAD OF SCREEN - PRELOAD DATA
    myFunction("4");

    // SUBSEQUENT ACTIO NFROM USER
    $("#textFieldId").on("change keyup", function(){
       myFunction($(this).val());
        return false;
    });
});

function myFunction(i){
     var selectedVal = i;
        $("pre").hide();
        var temp = '#id'+selectedVal
        $(temp).show();

}
于 2012-08-25T07:01:34.183 に答える