【发布时间】:2013-04-23 11:39:49
【问题描述】:
我已经在网上搜索过,我尝试过到处执行“preventdefaults”和“return false”语句,但我似乎无法找到阻止此表单提交和重新加载页面的方法。它仅在表单经过验证后才会重新加载。我是一个初学者,但我真的很努力地实现了验证表单的脚本(它具有“post”方法和“#”作为操作),并进行 ajax 调用。这是一项学校作业,对于你们可以给出的任何指示都会很优雅。
$(document).ready(function()
{
$("#submit").click(function()
{
var gbname = $("#gbname")[0];
var gbmessage = $("#gbmessage")[0];
formFields = [gbname, gbmessage]
var warning = false;
for (i=0; i<formFields.length; i++)
{
formFields[i].style.backgroundColor = "white";
if (formFields[i].value == "")
{
formFields[i].style.backgroundColor = "red"
$(formFields[i]).bind("keyup", resetBgColor);
$(formFields[i]).bind("change", resetBgColor);
warning = true;
}
}
if (warning == true)
{
alert("Vänligen fyll i fälten korrekt!");
return false;
}
else
{
$.post('ajax.php', {gbname: gbname, gbmessage: gbmessage},
function(data)
{
$("#successmessage").html(data);
$("#successmessage").hide();
$("#successmessage").fadeIn(1500); //Fade in error/success-meddelande
var comment = $("<div class='film2'><p class='names'><b>Namn:</b>" +gbname+ "</p> <p class='messages'><b>Meddelande:</b>" +gbmessage+ "</p></div>");
$("#kommentarer").prepend(comment);
clearForm();
});
return false;
}
return false;
});
});
【问题讨论】:
-
确保您的按钮是常规按钮而不是提交按钮 :)
-
而不是
click尝试使用$('form').submit(function(){return false;}) -
每次单击该按钮时,您都会将表单元素与事件绑定。这是个坏主意。
-
如果您检查您的 js 控制台,您是否在页面重新加载之前发现任何错误?如果我不得不四处走动,我怀疑您的代码中出现错误,并且由于代码未能完成执行而导致错误返回没有受到影响-然后表单继续执行默认行为,即发布。
-
答案就是你的标签之一。又名preventDefault。并且 return false 可能由于 JS 错误而失败。设置您的控制台以在页面导航上保留控制台。
标签: javascript jquery return preventdefault