Javascript jQuery.on不工作

Javascript jQuery.on不工作,javascript,jquery,Javascript,Jquery,我在很多地方都见过这种情况;然而,几个小时后,我仍然无法理解这件简单的事情。有人能验证我的语法是否正确吗 $(文档).ready(函数(){ $(“#登录表单”)。在('提交',“#注销btn”,函数()上{ 警报(“已单击注销按钮”); }); }); 试试这个: 单击submit按钮时会触发submit事件,并且可能有多个按钮元素被单击,而没有type=“button | reset”。它也可以由Enter键触发 您可以使用它来确定是否单击了注销按钮。然而,就表单提交而言,submit

我在很多地方都见过这种情况;然而,几个小时后,我仍然无法理解这件简单的事情。有人能验证我的语法是否正确吗

$(文档).ready(函数(){
$(“#登录表单”)。在('提交',“#注销btn”,函数()上{
警报(“已单击注销按钮”);
});
});

试试这个:


单击
submit
按钮时会触发
submit
事件,并且可能有多个
按钮
元素被单击,而没有
type=“button | reset”
。它也可以由
Enter
键触发

您可以使用它来确定是否单击了注销按钮。然而,就表单提交而言,
submit
事件是迄今为止最可靠的:

$("#logout-btn").on('click', function(e) {
    e.preventDefault(); //prevents default action.
    alert("The logout button was clicked.");
});
$(函数(){
$(“#注销btn”)。在('click',函数(e){
e、 preventDefault();//阻止默认操作。
警报(“已单击注销按钮”);
});
})

存储上次单击按钮的值,并在
.submit()
事件中,确保上次单击的按钮是注销按钮。这是因为
.click()
事件是在
.submit()
事件之前触发的:

$(文档).ready(函数(){
//注销按钮:
var logoutButton=$(“#注销btn”);
//此变量以#登录形式保存用户上次单击的按钮:
var=null;
//当用户单击#登录表单中的按钮时,将其设置为lastClicked:
$(“#登录表单输入[type=submit]”。单击(函数(){
lastClicked=$(此);
});
//提交表单时,如果是注销按钮,则调用警报:
$(“#登录表单”)。在('submit',function()上{
如果(lastClicked.is(注销按钮)){
警报(“已单击注销按钮”);
}
});
});

您的表单中有两个提交按钮,您可以像这样确定单击了哪个按钮

$(document).ready(function() {
  $("#login-form input[type=submit]").click(function() {
    var clickedId = $(this).attr('id');
    if(clickedId=="logout-btn")
      alert("The logout button was clicked.");
    else if(clickedId=="login-btn")
    alert("The login button was clicked.");
  });
});
请注意,您的登录按钮具有注销按钮的ID,反之亦然

我要给Peters的答案加上一个替代品,只是为了有一个替代品

在标记中使用
onclick

函数logOutClicked(){
警报(“单击注销按钮!”);
返回true;
}


try on('click',…而不是代替
$(“#登录表单”)。on('submit',function()
而不是
$(“#登录表单”)。on('submit',“#注销btn”,function()
@PranavCBalan我想他是在使用的
选择器
参数,以便只在单击
#注销btn
时触发事件,所以我不确定这是不是问题所在。@Noblemushak:那么他应该使用
单击
事件我希望您已经意识到按钮的值也被交换了,登录按钮有
id=“btn注销”
反之亦然。希望这不是你花了几个小时的时间在做的事情……这会带来警报,但我只想指定注销按钮为什么会有登录和注销按钮?我正在隐藏以显示一个相关的或当前的登录/注销状态。那里有一些类隐藏代码,但我没有在这里显示,以便将问题弄清楚;-)你不应该使用提交事件进行注销,因为不需要获取信息。从用户的输入来看,他的作品似乎非常复杂。我本以为这是一件非常简单的事情。我了解发生了什么。如果我使用单击而不是提交,这也没有帮助。不幸的是,这相当复杂,但我不认为DOM提供了任何简单的方法来实现这一点。这就是JavaScript的用法。:(preventDefault()不走运,这是什么意思?上面的代码片段不起作用-使用preventDefault不起作用。请看我刚才添加的演示。
$(document).ready(function() {
  $("#login-form input[type=submit]").click(function() {
    var clickedId = $(this).attr('id');
    if(clickedId=="logout-btn")
      alert("The logout button was clicked.");
    else if(clickedId=="login-btn")
    alert("The login button was clicked.");
  });
});