我有一些在FF和MSIE中完美运行但在Safari中无法正常工作的东西。这是一个带有选项的表单,可以通过MySQL DB中的AJAX / jQuery进行更新。
在Safari中,当您选择第一个项目时,它会正确加载下一个选择菜单的选项;但是,当您选择其中一个(在后续选择菜单中加载新选项)时,整个表单将重置并从该点开始中断。 有没有人知道会导致这种情况的Safari漏洞? 这是JS:
$(document).ready(function(){
$("#searchForm select").change(updateSearchForm);
});
function updateSearchForm() {
$.ajax({
url: '/elements/search_form.php?ajax=true',
data: $('#searchForm').serialize(),
error:function(xhr,err){
alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status);
alert("responseText: "+xhr.responseText);
},
success: function(data) {
$("#searchForm").html(data);
$("#searchForm select").change(updateSearchForm);
}
});
}
我可以为表单发布相关的PHP / HTML,但它很冗长。 我对JS比较陌生,所以我不知道从哪里开始调试这个... TIA
答案 0 :(得分:1)
您可能是通过替换HTML来创建无效表单。有些浏览器对此非常挑剔。当然我不确定,因为您没有发送整个代码,但是您是否尝试使用append()而不是html()来修改表单?出于诊断原因,还尝试先添加一小部分。
答案 1 :(得分:1)
一位朋友在阅读了Gabor的帖子后想出了这个...我需要使用“.replaceWith(data)”而不是“.html(data)”。显然FF正在补偿这一点,但Safari并非如此;每次ajax加载新的html时它都嵌套在目标元素(#searchForm)中,所以有嵌套的“form”标签,Safari不喜欢这样。 感谢大家的帮助!