首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在提交按钮上使用preventDefault

在提交按钮上使用preventDefault
EN

Stack Overflow用户
提问于 2013-02-27 10:03:52
回答 2查看 22.7K关注 0票数 6

我正在试着解决jQuery课本上的一个问题。它是这样写的

“即使没有创建条目,也会提交数据,要解决这个问题,必须停止submit按钮的默认操作。为此,请在文件末尾的if语句中编写事件对象的preventDefault方法,如图10-6所示

注意*这是10-6中的代码,当我按照书中的建议将它标记到代码的末尾时,它对我不起作用。

代码语言:javascript
运行
复制
if (isValid == false) { event.preventDefault(); }

请记住,用于事件对象的名称必须与用于提交事件处理程序的参数的名称相同。

注意*提交事件处理程序如下所示

代码语言:javascript
运行
复制
    $("#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方法,则表单将被提交到服务器,因为这是它的默认操作。

任何见解都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2013-02-27 10:17:45

event变量是必须传递给处理程序的东西。您的匿名函数function(){}需要接受event变量:

代码语言:javascript
运行
复制
$("#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();
    }
});
票数 9
EN

Stack Overflow用户

发布于 2013-02-28 04:08:18

我今天在课堂上了解到,答案实际上是这样的。

代码语言:javascript
运行
复制
$("#email_form").submit(
function(event) {
    var isValid = true;

需要在验证结束时有我的功能(如下)…

代码语言:javascript
运行
复制
if (isValid == false) { event.preventDefault(); }

与“我的提交”按钮的事件处理程序中的事件交互。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15102902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档