0

この例を見ましたが、実装できませんでした。私は何か他のものが欠けているのだろうか。

注:response.user_data['admin']nullではありません。私がチェックしました。

何か案は?

ありがとう

動作しませんでした

$('#select_administrator option[value="'+response.user_data['admin']+'"]');
$('#select_administrator option:eq('+response.user_data['admin']+')').attr('selected', 'selected');
$('#select_administrator option:eq('+response.user_data['admin']+')').prop('selected', true);

HTML

<select id="select_administrator" name="select_administrator">
    <option value="NO" <?php echo ($administrator == 'NO') ? 'selected="selected"' : null; ?>>NO</option>
        <option value="YES" <?php echo ($administrator == 'YES') ? 'selected="selected"' : null; ?>>YES</option>
</select>

JQUERY

$(document).ready(function()
{
   $("#select_user").change(function(event)
   {
      event.preventDefault();

      var selected_user = null;
      selected_user = $(this).val();

      $.ajax({
                 type       : "POST",
                 url        : 'mypage.php',
                 data       : {select_user:selected_user},
                 dataType   : "json",
                 success        : function(response)
         {
            if(response.status == "success")
                    {
                        $("#form_errors_jquery").hide();

                        $("#text_username").val(response.user_data['username']);

                        //response.user_data['admin'];
                        //Should select admin combo here

        //$('#select_administrator option[value="'+response.user_data['admin']+'"]');
        //$('#select_administrator option:eq('+response.user_data['admin']+')').attr('selected', 'selected');
        //$('#select_administrator option:eq('+response.user_data['admin']+')').prop('selected', true);

                    }
                    else
                    {
                        $("#form_errors_jquery").html(response.error).fadeIn(1000);
                    }
         },
                 error      : function(response)
                 {
                     $("#form_errors_jquery").html("A network error occured").fadeIn(1000);
         }

      return false;
   });
});
4

2 に答える 2

0

問題を解決するために、代わりにこのコードを使用しましたが、上記の元のコードが機能しないのはなぜですか?

if (response.user_data['admin'] == 'YES')
{
    $('#select_administrator').val('YES');
}
else
{
    $('#select_administrator').val('NO');
}
于 2012-12-05T14:57:09.403 に答える
0

まず、jquery は変更時にこれを選択しています$("#select_user").change(function(event) が、html は<select id="select_administrator" name="select_administrator">選択要素の正しい ID を選択して再試行することをお勧めします。

さらに、これらはどちらも HTML の jsfiddle で機能します。response.user_data['admin'] にスペースが含まれているか、正しくフォーマットされていないことが私の推測です。

$(document).ready(function() {
   $('#select_administrator option[value="NO"]').prop('selected', true); 
});​

$(document).ready(function() {
   $('#select_administrator option[value="NO"]').attr('selected','selected'); 
});​

編集:上記のコードをあなたがやろうとしていることで煮詰めたjsfiddleを作成しましたが、これら2つのオプションはまったく機能しませんでした:

 $('#select_administrator option:eq('+response.user_data['admin']+')').attr('selected', 'selected');
 $('#select_administrator option:eq('+response.user_data['admin']+')').prop('selected', true);

ただし、attr('selected', 'selected'); を追加すると、最初に、次のようにします。

$('#select_administrator option[value="'+response.user_data['admin']+'"]').attr('selected', 'selected');

それは正常に動作します。それを試してみて、私に知らせますか?

于 2012-12-05T14:15:36.063 に答える