我正在尝试使用Javascript来控制网络表单。这是我的所有Javascript代码以及我想要实现的内容。
$(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()事件,因为我希望相同的代码可以处理多种类型的事物,包括链接和可能的其他元素。
答案 0 :(得分:9)
您正试图在页面中存在元素之前绑定事件处理程序。
通过将回调传递给.load
1>来绑定后添加表单的处理程序:
$(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");
});
答案 1 :(得分:3)
jQuery对象没有onClick
方法。使用.click
。您的代码应如下所示:
$("#button").click(function(){
console.log("Clicked");
});
答案 2 :(得分:3)
这不是正确的方法,用jquery注册处理程序......
试
$('#button').click(function(){
console.log('test');
});
答案 3 :(得分:3)
$("#button")
返回一个没有onclick
属性/方法的jQuery对象。使用.click
:
$('#button').click(function() {
});
答案 4 :(得分:2)
尝试使用.on
$("#button").on('click', function(){
console.log("Clicked");
});
答案 5 :(得分:1)
onclick
不是click
$("#button").click();
答案 6 :(得分:0)
在将onclick行为分配给按钮之前,您确定要等待加载文档吗?尝试将作业更改为
$(document).ready(function(...))