jQuery错误无法读取未定义的属性“提交”

我的代码中的这一步几乎所有东西都可以正常工作,但是,代码可以工作,但由于某种原因仍然显示我似乎无法修复的控制台问题。


索引.ejs


<%- include("partials/header") %>


<div class="container my-5">

    <div class="row justify-content-center">

            <div class="card bg-dark" style="width: 18rem;">

                <div class="card-header text-white">

                    To-Do List

                    <a href="#collapseToDo" data-toggle="collapse"><i class="fas fa-plus ml-auto"></i></a>

                </div>


                <ul class="list-group list-group-flush">

                    <div class="collapse" id="collapseToDo">

                            <form class="" action="/" method="POST">

                                <input class="list-group-item bg-light rounded-0" name="todo" type="text" placeholder="Enter To-Do"/>

                            </form>

                    </div>

                    <% todos.forEach(function(todos){ %>

                    <li class="list-group-item"><%= todos.title %> <form action="/<%= todos._id %>?_method=DELETE" method="POST"><button><i class="far fa-trash-alt"></i></button></form></li>

                    <% }) %>

                </ul>

            </div> 

    </div>

</div>


<%- include("partials/footer") %>

dom.js


$("ul").on("click", "button", function(event){

    $(this).parent().parent().fadeOut(500, function(){

        $(this).remove();

    });

    event.stopPropagation();

});


    $("input[type='text']").keypress(function(event){

        if(event.which === 13){

          var todoText = $(this).val(); 

          $(this).form.submit();

          $(".list-group").append("<li class='list-group-item'>" + todoText + "<span><i class='far fa-trash-alt'></i></span></li>");

          $(this).val("");

        }

    });


    $(".list-group").on("click", "li", function(){ 

        $(this).toggleClass("completed");

    });

我似乎无法$(this).form.submit()在没有任何错误的情况下开始工作。我收到以下错误:无法读取未定义的属性“提交”


奇怪的是。表单确实最终成功提交,但是由于错误,事件侦听器中的下一行没有通过。谁能帮帮我?


斯蒂芬大帝
浏览 144回答 1
1回答

浮云间

有了这条线:$(this).form.submit();this指发生的input地方keypress。input元素没有form属性,因此没有方法undefined,因此您的错误。undefinedsubmitCannot read property 'submit' of undefined现在,表单最终提交(或至少开始提交)的原因是因为您没有submit按钮,在这种情况下form按 ENTER(字符代码 13)会导致 a&nbsp;submit。将行更改为:$(this).closest("form").submit();以便找到最近的form祖先元素,input然后submit调用它。或者,完全删除该行并让按 ENTER 键启动提交过程,就像它本身所做的那样。仅供参考:该keypress事件已被弃用。改为使用keydown。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript