我正在试着解决jQuery课本上的一个问题。它是这样写的
“即使没有创建条目,也会提交数据,要解决这个问题,必须停止submit按钮的默认操作。为此,请在文件末尾的if语句中编写事件对象的preventDefault方法,如图10-6所示
注意*这是10-6中的代码,当我按照书中的建议将它标记到代码的末尾时,它对我不起作用。
if (isValid == false) { event.preventDefault(); }
请记住,用于事件对象的名称必须与用于提交事件处理程序的参数的名称相同。
注意*提交事件处理程序如下所示
$("#email_form").submit(
function() {
var isValid = true;
// the script proceeds to validate each text field accordingly bla bla bla
现在,再次使用空字段进行测试。这将在除邮政编码字段之外的每个字段的右侧显示“此字段为必填项”。
我的问题是我的preventDefault不工作,不管我怎么尝试,它仍然会提交。
解释图10-6的文本中的一个有趣的注释可能会有所帮助,但我不太理解,如下所示。
在这里,您会看到一个最终的if语句,如果isValid变量为false,则该语句为true,这意味着一个或多个字段无效。在这种情况下,将执行事件对象的preventDefault方法。此对象将作为参数传递给submit事件处理程序的函数,该参数由此处理程序的第一行存储在事件变量中。如果在将一个或多个字段提交到服务器时不使用preventDefault方法,则表单将被提交到服务器,因为这是它的默认操作。
任何见解都将不胜感激。
发布于 2013-02-27 10:17:45
event
变量是必须传递给处理程序的东西。您的匿名函数function(){}
需要接受event
变量:
$("#email_form").submit(function(event){
var isValid = true;
// do all your validation here
// potentially if one of the fields is empty
// isValid will be set to false
if (!isValid) {
event.preventDefault();
}
});
发布于 2013-02-28 04:08:18
我今天在课堂上了解到,答案实际上是这样的。
$("#email_form").submit(
function(event) {
var isValid = true;
需要在验证结束时有我的功能(如下)…
if (isValid == false) { event.preventDefault(); }
与“我的提交”按钮的事件处理程序中的事件交互。
https://stackoverflow.com/questions/15102902
复制相似问题