我们正在构建一个Web应用程序,它在'select'标签上使用jquery ajax和jsp。 Ajax请求适用于所有浏览器,当然,臭名昭着的IE家族除外。通常,如果我点击“选择”标签,它应该根据所选的选项动态填充其他“选择”标签。 但在IE中,此功能第一次起作用,然后第二次停止工作。然后当我第三次点击另一个'select'标签时,一切正常。 这是第二次让我担心。
这是jquery ajax代码,它适用于所有'select'标签的所有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"});
}
}
});
});
}
提前致谢。
答案 0 :(得分:1)
@Shaoz - 您需要显示您打开单选按钮的方式。也许展示radioButtonHighlightSelection()
功能。由于事件执行顺序,IE在正确执行jQuery事件时遇到问题。我想您可能希望在执行blur
事件后执行click
事件。
您可能想查看我的question on checkboxes。