jQuery代码冲突
问题描述:
通用标题的道歉。jQuery代码冲突
我有两个jQuery文件,一个处理表单提交和一个处理页面超链接。
表单提交检查表单条目是否不为空,如果是 - 它会通知用户并在表单填写表单数据传递到处理文件时显示错误消息。
超链接将新页面数据加载到div中,此新页面数据通常包含由处理文件处理的表单。
我不知道为什么 - 但约60%的时间表单提交将'刷新'点击并加载主索引页或上次访问的页面。这似乎完全是随机的。
我看不出为什么会发生这种情况,如果有人能告诉我,我将不胜感激。
表单提交代码:
$(document).ready(function(){
$('.ajax_form').submit(function() {
// check for empty inputs
var errors = 0;
$(".ajax_form :input").map(function(){
if(!$(this).val()) {
errors++;
}
});
// if empty inputs inform user
if(errors > 0){
$('#results').text("All fields are required");
return false;
}
// hide form and show loader
$(".ajax_form").slideUp("normal");
$('#results').html('<span id="load">Loading..</span>');
// post data to processing file
$.post(
'processing.php',
$(this).serialize(),
function(data){
$("#results").slideDown("normal");
$("#results").html(data)
}
);
return false;
});
});
导航代码:
$(document).ready(function(){
// if hash is already set, load linked data
var hash = window.location.hash.substr(1);
$('#nav li a').each(function(){
if(hash == $(this).attr('href')){
var toLoad = hash + '.php';
$('#content').load(toLoad)
}
});
// each menu item on click load linked data
$('#nav li a').click(function(){
var toLoad = $(this).attr('href') + '.php';
window.location.hash = $(this).attr('href');
$('#content').prepend('<span id="load">Loading..</span>');
$('#content').hide();
$('#content').load(toLoad);
$('#content').slideDown('normal');
return false;
});
});
答
您的表单刷新,因为达到return false;
部分前,脚本之前某处打破 。使用firebug
或类似来检测这个。一定要处理所有结果或每个条件。
可能是一个快速空运行可以检测到的差距。
我的粗略猜测是,该点击功能由于某种原因失败,并不会返回false,导致链接打开正常。你在JavaScript控制台中遇到任何错误吗? – 2012-03-04 09:26:20
也许你应该检查'if(!$(this).val().length){errors ++; }'?另外,你的'return false;'是在代码中。你应该使用'$('。ajax_form')。submit(function(e){e.preventDefault(); ...});' – Shef 2012-03-04 09:29:29
你是从cdn加载jquery吗? – Rafay 2012-03-04 09:36:40