1

2 つの選択ボックスを含むページがあり、そのうちの 1 つが AJAX 呼び出しによって読み込まれます。次に、送信ボタンを有効にする前に、jquery/javascript で要素を検証したいと考えています。静的選択 (strDirectorate) を変更しても、AJAX 呼び出しによってロードされたドロップダウンの値を取得できない場合、jquery は正常に動作します。

2 番目のドロップダウンで、最初のアイテム (最初のアイテムは空白の値) ではなく、アイテムを選択したかどうかを確認する必要があります。

jquery 1.7.2 を使用しました //最初のドロップダウンは 100% 正確に動作します

//Load Sub Category by Category
$(document).ready(function() {
  $("#category_id").live('change', function() {
    $("#span_sub_category").html( '<img src="<?php echo $base_client;?>images/ajax-loader.gif"/>' );
    $.ajax({
        type: 'POST',
        cache: false,
        url: '<?php echo $base_client;?>ajax-response.php',
        data: 'category_id='+$('#category_id').val()+'&drop_down_name=sub_category_id&operation=load_sub_category',
        success: function(data) {
            if(data){
                var obj = jQuery.parseJSON(data);
                if(obj.response==1){
                    //$('#msg_speaker_login').hide();
                    $('#span_sub_category').hide().html(obj.message).slideDown(1000);
                }else{
                    $('#span_sub_category').hide().html(obj.dd_list).slideDown(1000);
                    table_name="directory_company";
                    prepare_sorting_list();
                }
            }else{
                //JSON unable to return data.
            }
        }
    });
  });
});

これは ajax 呼び出しによってロードされたドロップダウンです。

<select name="sub_category_id" id="sub_category_id">
  <option value="">Sub Category</option>
  <option value="2">Mobile Engineers</option>
  <option value="1">Motor EngineersX</option>
  <option value="3">Chemical Engineers</option>
</select>

送信ボタンのクリック イベントで、sub_category_id が読み込まれて選択されているかどうかを確認しようとしました。

$(document).ready(function() {
  $('#btnKeywordSaveUpdate').live('click', function() {
     if(typeof("sub_category_id") != "undefined")
       alert("Sub category not loaded");
     else if($('#sub_category_id').val()=="")
       alert("Please select sub category");
     alert(msg);
  });
});

最後に、私の問題は次のとおりです。私は常にアラートを受け取ります(「サブカテゴリがロードされていません」); しかし、サブカテゴリのドロップダウンがページに読み込まれ、空白以外の値を選択しました。では、サブカテゴリのドロップダウンがページに読み込まれて選択されているかどうかを確認するにはどうすればよいですか。

4

2 に答える 2

0

liveまず、推奨されていないため使用しないでください。on代理人と一緒に使用します。第二に、あなたtypeof("sub_category_id")は常に であるstringため、「サブカテゴリがロードされていません」と常に表示されるのはなぜですか。また、length要素が存在するかどうかを確認するために使用する必要があります。それを念頭に置いて、これを試してください:

$(document).on('click', '#btnKeywordSaveUpdate', function() {
    if (!$("#sub_category_id").length) {
        alert("Sub category not loaded");
    }
    else if ($('#sub_category_id').val() == "") {
        alert("Please select sub category");
    }

    alert(msg); // Where does message come from?
});

ここではデリゲート ハンドラーに使用したことに注意してくださいdocument。実際には、動的に追加されない最も近い要素を使用する必要があります。

于 2013-09-04T07:42:22.853 に答える