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

时间:2019-11-27 18:32:06

标签: javascript jquery node.js ejs

在此步骤中,我几乎可以完成所有工作,但是代码可以工作,但是由于某些原因,仍然显示控制台问题,我似乎无法解决。

index.ejs

RepositoryRestConfigurer

dom.js

<%- 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") %>

我似乎无法$("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"); }); 正常工作。我收到以下错误:无法读取未定义的属性“提交”

奇怪的是。表单确实成功提交,但是由于该错误,事件监听器中的下一行没有通过。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

此行:

$(this).form.submit();

this指发生input的{​​{1}}。 keypress元素没有input属性,因此formundefined没有undefined方法,因此您的{{1} }错误。

现在,表单确实提交(或至少开始提交)的原因是,您的submit中没有Cannot read property 'submit' of undefined按钮,而是按ENTER键(字符代码13)在这种情况下会导致submit

将行更改为:

form

,以便找到submit中最接近的$(this).closest("form").submit(); 祖先元素,然后在其上调用form。或者,完全删除该行,然后按ENTER键就可以像本地方法一样开始提交过程。

仅供参考:input事件已被弃用。请改用submit