老师 问题在下面

老师 问题在下面

<!DOCTYPE html>

<html lang="en">


<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.js"></script>

</head>


<body>

    <form action="javascript:alert('哈哈哈');">

        <input type="text">

        <input type="submit">

        <input type="button" value="按钮">

        <button>提交</button>

    </form>

</body>

<script>

    $(document).ready(function () {

        /*   $("form").submit(function () {

              var value = $('input').val();

              if (value != "哈哈哈") {

                  return false

              } else {

                  return true;

              }

          }); */


        $('input').eq(2).click(function () {

            $('form').submit(function () {

                var value = $('input').val();

                if (value != "哈哈哈") {

                    return false

                } else {

                    return true;

                }

            });

        })

    })

</script>


</html>

为什么按钮点击没反应,而其他两个却可以,form的submit() 是按钮点击事件的事件句柄吧,不是要点击之后才响应吗?现在是什么情况,怎么按钮倒没反应,而其他两个却可以?请老师解释一下

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好,很抱歉没有给同学讲清楚。参考如下理解:

1.submit()不加参数,那么是自动提交,所以会提交表单,弹出内容。

2.加上回调函数之后,那么submit()自动提交就无效了,即不会自动提交表单了,而是变成一个事件处理函数了。点击按钮,只会触发submit事件函数了。但button是一个普通的按钮,点击时不会自己触发submit事件,所以回调函数不会执行。可以把它改一下:

http://img1.sycdn.imooc.com//climg/5f2babea0906391104540062.jpg

事件中加一个弹窗,证明是触发submit中的回调函数。

http://img1.sycdn.imooc.com//climg/5f2bac20095c147c04800366.jpg

http://img1.sycdn.imooc.com//climg/5f2bad1b090c3f4e01400093.jpg

总结:不加参数,则是自动提交,所以点击按钮自动提交form表单;加上参数,就变成点击按钮需要执行的函数。

祝学习愉快~

  • 大白前端 提问者 #1
    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.js"></script> </head> <body> <form action="javascript:alert('哈哈哈');"> <input type="text"> <input type="submit"> <input type="button" value="按钮"> <button>提交</button> </form> </body> <script> $(document).ready(function() { /* $("form").submit(function () { var value = $('input').val(); if (value != "哈哈哈") { return false } else { return true; } }); */ $('input').eq(2).click(function() { $('form').submit(function() { alert("斤斤计较"); }); }) }) </script> </html> 把代码改成老师所说的alert("你好”);先点击那个普通按钮并没有反应,再点击其他两个具备submit功能的提交按钮后则会先弹出“你好”再弹出"哈哈哈”。老师不是说如果给普通按钮绑定submit事件如果没带参数的就具备自动提交功能、如果加参数如回调函数则会执行回调函数里的内容吗?怎么我测试了一下跟老师描述的不一样呢???
    2020-08-06 15:51:25
  • 大白前端 提问者 #2
    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.js"></script> </head> <body> <form action="javascript:alert('哈哈哈');"> <input type="text"> <input type="submit"> <input type="button" value="按钮"> <button>提交</button> </form> </body> <script> $(document).ready(function() { /* $("form").submit(function () { var value = $('input').val(); if (value != "哈哈哈") { return false } else { return true; } }); */ $('input').eq(2).click(function() { $('form').submit(function() { alert("你好"); }); }) }) </script> </html> 把代码改成老师所说的alert("你好”);先点击那个普通按钮并没有反应,再点击其他两个具备submit功能的提交按钮后则会先弹出“你好”再弹出"哈哈哈”。老师不是说如果给普通按钮绑定submit事件如果没带参数的就具备自动提交功能、如果加参数如回调函数则会执行回调函数里的内容吗?怎么我测试了一下跟老师描述的不一样呢???
    2020-08-06 15:52:04
好帮手慕夭夭 2020-08-06 16:46:51

同学你好,代码漏了一步,参考如下修改,再进行测试就可以了:

http://img1.sycdn.imooc.com//climg/5f2bc33f094d1c3d07320191.jpg

祝学习愉快~

好帮手慕夭夭 2020-08-06 13:40:24

同学你好,submit()方法本身是没有参数的,所以在括号中加了参数就无效了。直接调用submit()即可,不要设置参数。

祝学习愉快~

  • 提问者 大白前端 #1
    没有讲清楚 像下面这个把回调函数作为参数也可以,怎么叫加了参数就无效? submit()的用法也说的不够详细 $("form").submit(function () { var value = $('input').val(); if (value != "哈哈哈") { return false } else { return true; } });
    2020-08-06 14:02:43
好帮手慕夭夭 2020-08-06 11:16:57

同学你好,问题解答如下:

1.type="submit"类型的按钮自带表单提交功能,与事件句柄没有关系。点击它会自动提交form表单的数据,所以点击会弹出“哈哈哈”。如果不嵌套在form中,那么submit提交功能也就没有了,自己可以试一试。

2.<button>按钮不指定类型,默认类型也是submit,所以也会有提交功能。可以改变一下它的类型,就不会有提交功能了。

http://img1.sycdn.imooc.com//climg/5f2b7528092ccb1b03550040.jpg

3.而中间的按钮,类型就是一个普通的按钮,所以没有提交功能,除非给它绑定点击事件,事件中弹出弹窗。

http://img1.sycdn.imooc.com//climg/5f2b753609f3d08f03130047.jpg

http://img1.sycdn.imooc.com//climg/5f2b76270965a1ab04170159.jpg

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

  • 提问者 大白前端 #1
    老师你给这个按钮的点击事件我懂,我是不明白为什么点击按钮后里面的submit没有反应 ?$('form').submit(function() { var value = $('input').val(); if (value != "哈哈哈") { return false } else { return true; } }); 而视频中这个submit()里没有加回调函数却可以 $('input').eq(2).click(function() { $('form').submit(); }) 麻烦老师解释一下,这是我想问的?
    2020-08-06 11:34:14
  • 提问者 大白前端 #2
    老师你给这个按钮的点击事件我懂,我是不明白为什么点击按钮后里面的submit没有反应 ? $('input').eq(2).click(function () { $('form').submit(function () { var value = $('input').val(); if (value != "哈哈哈") { return false } else { return true; } }); 而视频中这个submit()里没有加回调函数却可以 $('input').eq(2).click(function() { $('form').submit(); }) 麻烦老师解释一下,这是我想问的?
    2020-08-06 11:35:46
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师