2010-09-22 3 views
0

Мы создаем веб-приложение, и оно использует jquery ajax и jsp на тегах «select». Ajax-запрос работает во всех браузерах, за исключением, конечно, пресловутого семейства IE. Обычно, если я нажимаю на тег «select», он должен динамически заполнять теги «select» в зависимости от выбранной опции. Но в IE эта функция работает в первый раз, а затем перестает работать во второй раз. Затем, когда я нажимаю еще один тег «select» в третий раз, все работает нормально. Это тот второй раз, который меня беспокоит.JQuery ajax не работает так, как должно быть в IE

Вот код JQuery Ajax, и он применяется ко всем OnChange событий все «выбрать» теги:

function updateAvailableAttributes() { 
var form = document.forms["orderDefinition"]; 
form.elements["formChangeRequest"].value = "true"; 
$.ajax({ 
    type: "POST", 
    cache: false, 
    dataType: "html", 
    url: "ajax/possibleValues.html", 
    data: $("form#orderDefinition").serialize(), 
    success: function(response){ 
    $('#usercontent .sleeve .toprow').html(response); 
     //alert("Ajax is working!"); 
    applyValidation(); 
    radioButtonHighlightSelection(); 
    }, 
    error: function(response, ioArgs, err) { 
     if (response.status == 601) { 
      sessionTimedOut(); 
     } 
    }  
}); 

// Display a "please wait" message 
$("#waitingMsgOverlay, #waitingMsgBox, #waitingMsg, #waitingMsgParag").ajaxStart(function(e){ 
     var map = document.getElementById("OrderMap"); 
     map.disableApplication(); 
     $(this).show(); 
    }).ajaxStop(function(e){ 
     var map = document.getElementById("OrderMap"); 
     map.enableApplication(); 
     $(this).hide(); 
     $("#toolpanel").height($("#orderMap").height()); 
}); 
} 

Пожалуйста, мне советы по этому вопросу, это становится раздражающим.

Вот 'radiaButtonHighlightSelection()' Код:

function radioButtonHighlightSelection() 
{ 
var radioBtnCollection = $("#orderDefinition input:radio"); 
var radioBtnCheckedCollection = $("#orderDefinition input:radio:checked"); 
var checkBoxCollection = $(".fixedPricedAreasHolder input:checkbox"); 
var checkBoxCheckedCollection = $(".fixedPricedAreasHolder input:checkbox:checked"); 

radioBtnCollection.each(function(i, elemRd) 
{ 
    if(elemRd.checked) 
    { 
     $(this).parent().addClass("selectedRadioBg"); 
     $(this).parent().next(".fixedPricedAreasHolder").addClass("selectedCheckboxBg"); 
    } 
    else 
    { 
     $(this).parent().removeClass("selectedRadioBg"); 
    } 

    checkBoxCollection.each(function(i, cb) 
    { 
     if(cb.checked) 
     { 
      if($("#orderDefinition input:radio:eq(0)")[0].checked){ 
       $("#orderDefinition input:radio:eq(0)").removeAttr("checked"); 
       $(this).parent().parent().prev().find("input:radio").attr({"checked": "checked"}); 
       $(elemRd).parent().removeClass("selectedRadioBg"); 

       $(this).parent().parent().prev().addClass("selectedRadioBg"); 
       $(this).parent().parent().addClass("selectedCheckboxBg"); 
      } 
      else if(cb.checked == false){ 
       $("#orderDefinition input:radio:eq(0)").attr({checked: "checked"}); 
       $("#orderDefinition input:radio:eq(1)").attr({checked: "checked"}); 
      } 
     } 
    }); 

}); 
} 

Спасибо заранее.

ответ

1

@Shaoz - вам нужно показать, как вы включаете переключатели. Возможно показать radioButtonHighlightSelection() функция. IE имеет проблемы с выполнением событий из jQuery должным образом из-за последовательности выполнения событий. Я думаю, вы можете выполнить событие blur после выполнения события click.

Возможно, вы захотите проверить мой question on checkboxes.

+0

Я добавил код radioButtonHighlightSelection() в свой вопрос по запросу, но я не уверен, что это преступник. – Shaoz

Смежные вопросы