Javascript 提交按钮不工作。为什么?

Javascript 提交按钮不工作。为什么?,javascript,jquery,html,Javascript,Jquery,Html,当功能在同一页面上定义时,“提交”按钮起作用。但当提交按钮的动作在单独的JS文件中定义时,它就不起作用了 <form method="post"> <div id="sjfb"> <div id="form-fields"> @using (Html.BeginForm("Index", "Home", FormMethod.Post)) { @Html.

当功能在同一页面上定义时,“提交”按钮起作用。但当提交按钮的动作在单独的JS文件中定义时,它就不起作用了

<form method="post">
    <div id="sjfb">
        <div id="form-fields">
            @using (Html.BeginForm("Index", "Home", FormMethod.Post))
             {
                @Html.DisplayFor(model => model.controls);
                @Html.DisplayFor(model => model.formEditor);
             }
        </div>
        <button type="submit" id="submit" class="submit">Save Form</button>
    </div>
</form>
我甚至尝试了以下方法:

 1. document.getElementID('submit').onClick(function(){*some code*}
 2. Giving a name to the function and calling it in onClick()
 3. $(#sjfb #submit).click(function(){...})
 4.$(#sjfb .submit).click(function(){...})

仍然不起作用。我找不到这有什么问题。

您缺少submit类事件处理程序上的点

 $("#sjfb submit")
你应该:

$("#sjfb .submit")

您缺少提交类事件处理程序上的点

 $("#sjfb submit")
你应该:

$("#sjfb .submit")

如果在加载le dom内容之前加载javascript文件,则无法绑定按钮上的事件。尝试在文档末尾加载le js文件,或者您可以在触发事件$(window).on('load',fn)时添加事件

如果您在加载le dom内容之前加载javascript文件,则无法在按钮上绑定事件。尝试将le js文件a加载到文档末尾,或者您可以在触发事件$(window).on('load',fn)时添加该事件

将代码替换为此

$(document).ready(function() {
    $("form").submit(function () {
        alert('Submit button is working');
    });
});

用这个替换你的代码

$(document).ready(function() {
    $("form").submit(function () {
        alert('Submit button is working');
    });
});

问题就在这段代码中

$("#sjfb submit").click(function () {
  alert('Submit button is working');
}
为了明确起见,您应该按如下方式进行更改:

$(document).ready(function(){
    $("#sjfb .submit").click(function () {
    alert('Submit button is working');
    });
});
$(document).ready(function(){
    $("#sjfb #submit").click(function () {
    alert('Submit button is working');
    });
});
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("#sjfb .submit").click(function () {
    alert('Submit button is working');
    });
});
</script>
</head>
<body>
<form method="post">
    <div id="sjfb">
        <div id="form-fields">
            @using (Html.BeginForm("Index", "Home", FormMethod.Post))
             {
                @Html.DisplayFor(model => model.controls);
                @Html.DisplayFor(model => model.formEditor);
             }
        </div>
        <button type="submit" id="submit" class="submit">Save Form</button>
    </div>
</form>
</body>
</html>
或如下:

$(document).ready(function(){
    $("#sjfb .submit").click(function () {
    alert('Submit button is working');
    });
});
$(document).ready(function(){
    $("#sjfb #submit").click(function () {
    alert('Submit button is working');
    });
});
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("#sjfb .submit").click(function () {
    alert('Submit button is working');
    });
});
</script>
</head>
<body>
<form method="post">
    <div id="sjfb">
        <div id="form-fields">
            @using (Html.BeginForm("Index", "Home", FormMethod.Post))
             {
                @Html.DisplayFor(model => model.controls);
                @Html.DisplayFor(model => model.formEditor);
             }
        </div>
        <button type="submit" id="submit" class="submit">Save Form</button>
    </div>
</form>
</body>
</html>
因为您已经将class和id都指定为“submit”到您的submit按钮。因此,您也应该将其添加到js中

在w3上测试的整个代码如下:

$(document).ready(function(){
    $("#sjfb .submit").click(function () {
    alert('Submit button is working');
    });
});
$(document).ready(function(){
    $("#sjfb #submit").click(function () {
    alert('Submit button is working');
    });
});
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("#sjfb .submit").click(function () {
    alert('Submit button is working');
    });
});
</script>
</head>
<body>
<form method="post">
    <div id="sjfb">
        <div id="form-fields">
            @using (Html.BeginForm("Index", "Home", FormMethod.Post))
             {
                @Html.DisplayFor(model => model.controls);
                @Html.DisplayFor(model => model.formEditor);
             }
        </div>
        <button type="submit" id="submit" class="submit">Save Form</button>
    </div>
</form>
</body>
</html>

$(文档).ready(函数(){
$(“#sjfb.submit”)。单击(函数(){
警报(“提交按钮正在工作”);
});
});
@使用(Html.BeginForm(“Index”,“Home”,FormMethod.Post))
{
@DisplayFor(model=>model.controls);
@DisplayFor(model=>model.formEditor);
}
保存形式

问题出在这段代码中

$("#sjfb submit").click(function () {
  alert('Submit button is working');
}
为了明确起见,您应该按如下方式进行更改:

$(document).ready(function(){
    $("#sjfb .submit").click(function () {
    alert('Submit button is working');
    });
});
$(document).ready(function(){
    $("#sjfb #submit").click(function () {
    alert('Submit button is working');
    });
});
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("#sjfb .submit").click(function () {
    alert('Submit button is working');
    });
});
</script>
</head>
<body>
<form method="post">
    <div id="sjfb">
        <div id="form-fields">
            @using (Html.BeginForm("Index", "Home", FormMethod.Post))
             {
                @Html.DisplayFor(model => model.controls);
                @Html.DisplayFor(model => model.formEditor);
             }
        </div>
        <button type="submit" id="submit" class="submit">Save Form</button>
    </div>
</form>
</body>
</html>
或如下:

$(document).ready(function(){
    $("#sjfb .submit").click(function () {
    alert('Submit button is working');
    });
});
$(document).ready(function(){
    $("#sjfb #submit").click(function () {
    alert('Submit button is working');
    });
});
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("#sjfb .submit").click(function () {
    alert('Submit button is working');
    });
});
</script>
</head>
<body>
<form method="post">
    <div id="sjfb">
        <div id="form-fields">
            @using (Html.BeginForm("Index", "Home", FormMethod.Post))
             {
                @Html.DisplayFor(model => model.controls);
                @Html.DisplayFor(model => model.formEditor);
             }
        </div>
        <button type="submit" id="submit" class="submit">Save Form</button>
    </div>
</form>
</body>
</html>
因为您已经将class和id都指定为“submit”到您的submit按钮。因此,您也应该将其添加到js中

在w3上测试的整个代码如下:

$(document).ready(function(){
    $("#sjfb .submit").click(function () {
    alert('Submit button is working');
    });
});
$(document).ready(function(){
    $("#sjfb #submit").click(function () {
    alert('Submit button is working');
    });
});
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("#sjfb .submit").click(function () {
    alert('Submit button is working');
    });
});
</script>
</head>
<body>
<form method="post">
    <div id="sjfb">
        <div id="form-fields">
            @using (Html.BeginForm("Index", "Home", FormMethod.Post))
             {
                @Html.DisplayFor(model => model.controls);
                @Html.DisplayFor(model => model.formEditor);
             }
        </div>
        <button type="submit" id="submit" class="submit">Save Form</button>
    </div>
</form>
</body>
</html>

$(文档).ready(函数(){
$(“#sjfb.submit”)。单击(函数(){
警报(“提交按钮正在工作”);
});
});
@使用(Html.BeginForm(“Index”,“Home”,FormMethod.Post))
{
@DisplayFor(model=>model.controls);
@DisplayFor(model=>model.formEditor);
}
保存形式

尝试在
div中查找元素

$("#sjfb").find('button[type="submit"]').click(function (e){
    console.log(this);
});
此代码将找到
id=“sjfb”
div
中的按钮,并将调用
单击
函数。

尝试在
div中查找元素

$("#sjfb").find('button[type="submit"]').click(function (e){
    console.log(this);
});
此代码将找到
id=“sjfb”
div
中的按钮,并将调用
单击
函数。

您是否已将jQuery代码放入文档中。准备好事件处理程序了吗?另请注意,在您的另一种尝试中,语法应该是
onclick=function()…
,尽管
addEventListener()
会更好。当脚本位于不同的文件中时,如何将其包括在内?(是的,一个脚本标记,但在页面中的何处)?我正在cshtml文件@archer中的'section script'中添加我的JS文件。我已经在$(document.ready)中添加了所有函数(function(){..});包括$(“#sjfb submit”)。单击(函数(){alert('submit button's working');})@RoryMcCrossan
$(“#sjfb submit”)
将找不到提交按钮。将其更改为
$(“#提交”)
是否已将jQuery代码放入文档中。准备好事件处理程序了吗?另请注意,在您的另一种尝试中,语法应该是
onclick=function()…
,尽管
addEventListener()
会更好。当脚本位于不同的文件中时,如何将其包括在内?(是的,一个脚本标记,但在页面中的何处)?我正在cshtml文件@archer中的'section script'中添加我的JS文件。我已经在$(document.ready)中添加了所有函数(function(){..});包括$(“#sjfb submit”)。单击(函数(){alert('submit button's working');})@RoryMcCrossan
$(“#sjfb submit”)
将找不到提交按钮。将其更改为
$(“#提交”)
我之前已经按照您建议的那样给出了它。但即使我在单独的js中定义了函数,我也希望它能工作。@Iswarya是的,它也能以这种方式工作。将js文件包含在html代码的标记之前。但由于我们正在编写document.ready函数,所以的位置无关紧要。按照下面的方法操作
,其中demo\u script\u src是js文件的名称。另外,如果您的js文件与html文件不在同一位置,请在src中给出完整位置src=“c:/newfolder/myjs.js”@Iswarya您是否完全遵循了我在前面的评论中提到的内容?如果不起作用,则共享html文件和js文件的位置。还有js和html文件的内容。我之前已经给出了,就像你建议的那样。但即使我在单独的js中定义了函数,我也希望它能工作。@Iswarya是的,它也能以这种方式工作。将js文件包含在html代码的标记之前。但由于我们正在编写document.ready函数,所以的位置无关紧要。按照下面的方法操作
,其中demo\u script\u src是js文件的名称。另外,如果您的js文件与html文件不在同一位置,请在src中给出完整位置src=“c:/newfolder/myjs.js”@Iswarya您是否完全遵循了我在前面的评论中提到的内容?如果不起作用,则共享html文件和js文件的位置。还有js和html文件的内容。或
$(“sjfb#submit”)
$(“sjfb#submit”)