1

我已经建立了一个登录系统,例如,如果您单击导航栏中的标签,登录屏幕会从php 登录页面#log-in a加载到同一页面中,该系统现在正在处理纯 php 发布请求,我希望它能够通过jquery,所以我也可以检查任何用户错误。

我正在尝试像往常一样在其上实现 jquery,但 jquery 没有任何工作,即表单仍然通过 php 提交。

每个页面都有html

    <ul id="nav"><li id="log-in"><a href="../../login/">Log In</a></li></ul>

php登录页面

<div id="login">

<form name="login" action="../../login/index.php" method="post">
  <label>Username<input name="username" type="text" value="" /></label>
  <label>Password<input name="password" type="password" value="" /></label>
  <input type="submit" value="LogIn" id="login-join-submit"/>
</form>

</div><!--end of login->

jQuery

$('#log-in a').click(function() {

    $('#nav').append("<div id='background'></div><div id='wrapper'><div id='close'><p>Close[X]</p></div><div id='container'></div></div>");

    $('#container').load('../../login/index.php #login');

    $('#close p, #background').click(function() {
        $('#wrapper, #container, #close, #background').remove();
    });
    return false;
});

$('#login form[name=login]').submit(function(){
       alert('login');
       return false;
});

如您所见,表单login已加载,#container然后将 jquery 提交应用于它,但它不是通过 jquery 工作,而是通过 php 工作。

请查看并建议任何可能的方法。

谢谢。

4

1 回答 1

1

对于动态生成的元素,应该从元素的静态父对象或文档对象之一委托事件,您可以使用on方法。

$(document).on('submit', '#login form[name=login]', function(){
     alert('login');
     return false;
});

请注意,#background元素的事件也应该被委托:

$('#nav').on('click', '#background', function() {
    $('#wrapper').remove();
});
于 2012-10-28T06:21:26.173 回答