0

ここで例を参照してください。社長のヘッダーをクリックすると、ドロップダウンから選択され[Email Me]た連絡先フォームが開くはずWebmasterですが、それは起こっていません。

些細なことであることはわかっていますが、そのようにはなっていません。get中身email()は問題なく機能していますが、 を選択するoptionと、コードが失敗します。関連するすべてのコードを以下に示します。

私のHTML:

<form method="get">
    <select name="to" id="to-field">
      <option name="President" value="President">President</option>
      <option name="Webmaster" value="Webmaster">Webmaster</option>
    </select>
</form>

私のJS/jQuery:

function email(to){
    $(document).ready(function() {
         $.get('/inc/email.php', 
               function(data){
                    $('#email-form').html(data);
                    $('#email-form form').submit( function(){
                        var d = $('#email-form form').serialize();
                        $.ajax({
                          type:     'GET',  
                          url:      '/inc/email.php?submit=true&'+d,
                          success:  function(data) {
                                        $('#email-form').html(data);
                          }
                        });
                        return false;
                    });
            }
         );
     });

    if(to !== undefined){
        $('select#to-field').val(to);
        console.log( 'item selected -> ' + $('select#to-field').val() );
    }
}

これは以下によってトリガーされています。

<span onclick="javascript:email('Webmaster');">[Email Me]</span>

そしてconsole.log()戻ってきます:

item selected -> undefined

これを使用して選択した設定も試しました:

$("select#to-field[value=" + to + "]").attr("selected","selected");

そして、これも良い尺度です:

$("select#to-field[value=" + to + "]").attr("selected",true);

どんな助けでも大歓迎です!

4

1 に答える 1

2

あなたの $.get は非同期イベントです!! そのまま、あなたの

if(to !== undefined){
        $('select#to-field').val(to);
        console.log( 'item selected -> ' + $('select#to-field').val() );
    } 

内側の電子メール ページの読み込みが完了する前に実行されます。その部分 を$.get コールバック内に配置して、メール ページが読み込まれた後に実行します。

このように間に挟みます

$('#email-form').html(data);
//RIGHT HERE
    if(to !== undefined){
            $('select#to-field').val(to);
            console.log( 'item selected -> ' + $('select#to-field').val() );
        } 
//
$('#email-form form').submit( function(){...
于 2012-09-04T05:46:13.827 に答える