2012-01-20 56 views
2

我使用基於AJAX和PHP返回的搜索結果的選項值動態填充選擇框。當用戶在動態填充的選擇框中單擊其中一個選項時,將彈出一個包含表單的對話框,並預先填入值。該代碼在Mozilla Firefox中完美工作,但不在IE中。我已經簡化了jQuery代碼(切出形式值部分的填充),它可以看到下面:IE中用於動態生成選擇框的選項值的JQuery問題

$("#user-select").change(function() { 
     $("#user-select option").click(function() { 
      $("#form").dialog("open"); 
      return false; 
     }); 
    }); 

不知道爲什麼一個選項,點擊IE瀏覽器中的表單時不會彈出。讓我知道你是否需要更多信息。

回答

2

不要將點擊事件綁定到選項元素,它不適用於所有瀏覽器。只需打開對話框並取消點擊。

$("#user-select").change(function() { 
    $("#form").dialog("open"); 
}); 

編輯意見:

function selectHandler() { 
    $("#form").dialog("open"); 
    var val = $(this).val(); 
} 

$("#user-select").one("change", function () { 
    selectHandler(); 
    $(this).click(selectHandler); 
}); 

這個版本使得它的反應首先要改變,而且它反應後點擊。此外,這是一個更容易獲得價值的方法。

+0

適用於所有瀏覽器。非常感謝你。我能夠通過使用以下選項值html來填充表單域值: val = $(this +「option:selected」)。html(); 現在一切都很好! – Isaac

+0

實施此解決方案後出現另一個問題。如果我點擊一個選項,然後關閉生成的彈出窗體,然後再次單擊該選項,我無法再打開該窗體。所以我加了這個代碼:'$(「#user-select」)。click(function(){$(「#form」).dialog(「open」); return false;});' there's probably一個更好的方法,但它在IE8和Firefox中工作。 – Isaac

+0

有意義,因爲如果你不改變它,它不會再打開它。我只會使用其中一個。 –

相關問題