2012-09-01 196 views
1

我正在尝试使用Javascript来控制Web窗体。这里是我所有的Javascript代码以及我想要实现的内容。Javascript onClick事件未触发

$(document).ready(function(){ 
    function loadPage(url){ 
     $(".body").fadeOut(400, function(){ 
      $(".body").load(url); 
      $(".body").fadeIn(400); 
     }); 
    } 
    loadPage("pages/login.html"); 

    $("#button").on("click", function(){ 
     var pageTo = this.name; 
     loadPage("pages/" + pageTo + ".html"); 
    }); 
}); 

该代码稍后会做更复杂的事情,但它甚至不会运行上述操作。

我的形式看起来像这样

<FORM> 
    <SPAN class='header'>Login</SPAN><BR/> 
    <LABEL for='username' class='loginLabel'>Username</LABEL> 
    <INPUT type='text' id='username' name='username' value='' /> 
    <LABEL for='password'class='loginLabel'>Password</LABEL> 
    <INPUT type='password' id='password' name='password' value='' /> 
    <INPUT type='hidden' name='process' value='login' /> 
    <INPUT type='button' value='Login' name='index' id='button' /> 
</FORM> 

它是一个简单的登录表单,但是单击按钮时文本不会在控制台中显示出来。我不想使用提交按钮和JQuery .submit()事件,因为我需要相同的代码来处理多种类型的事情,包括链接和其他可能的元素。

+2

这不是你如何使用jQuery绑定事件处理程序。我建议看看http://api.jquery.com/category/events/。 –

+0

我做到了。它也没有工作。如果您阅读其他答案,我添加了评论,但它们都没有效果。 – legobear154

+1

然后有些东西你没有告诉我们(也许你的网页上的其他代码有问题),因为它的工作原理:http://jsfiddle.net/RbzAR/。 –

回答

6

您试图在元素存在于页面之前绑定事件处理程序。

无论是处理器绑定后您传递一个回调添加形式.load

$(document).ready(function(){ 
    function loadPage(url){ 
     $(".body").fadeOut(400, function(){ 
      $(".body").load(url, function() { 
       $("#button").on("click", function(){ 
        var pageTo = this.name; 
        loadPage("pages/" + pageTo + ".html"); 
       }); 
      }); 
      $(".body").fadeIn(400); 
     }); 
    } 
    loadPage("pages/login.html"); 
}); 

或使用事件代表团(见直接和委托的事件documentation):

$(document).on("click", "#button", function(){ 
    var pageTo = this.name; 
    loadPage("pages/" + pageTo + ".html"); 
}); 
2

尝试.on

$("#button").on('click', function(){ 
    console.log("Clicked"); 
}); 
+0

与以前相同的结果。控制台中没有显示。而且我也没有错误。 – legobear154

+0

忘了添加括号。 –

3

jQuery的对象没有onClick方法。使用.click。您的代码应该是这样的:

$("#button").click(function(){ 
    console.log("Clicked"); 
}); 

Demo

3

,这不是正确的方式,来注册使用jQuery处理程序...

尝试

$('#button').click(function(){ 
    console.log('test'); 
}); 
1

这不是onclick它的click

$("#button").click(); 
3

$("#button")返回一个没有onclick属性/方法的jQuery对象。使用.click

$('#button').click(function() { 

}); 
+0

也不起作用。 – legobear154

+2

把你的JS代码包装在一个document.ready函数中:'$(document).ready(function(){...});' – 0x499602D2

+0

那是什么意思?从一开始,并不觉得它是重要的包括在上面的代码 – legobear154

0

你确定你在等着文档分配的onclick行为,你的按钮之前加载?尝试将作业更改为内部

$(document).ready(function(...)) 
+0

..这不是什么值得检查?无论谁 - 我,你真的从来没有这样做? – TMan

+0

我确实在等待要加载的文档。尽管如此,我并不认为将它添加到上面的代码中很重要。 – legobear154