我的网站是基于PHP构建的。我有一个"注册"页面,可以验证是否已经使用了用户名。参见以下代码:
$('#signup_form').find('#username').blur(function() {
$ajax({
url: '/login/check_username',
type: "POST",
data: form_data,
success: function(result) {
if (result) {
$('#username').after('<div id="bad_username"
style="color:red;">' +
'<p>username taken</p></div>');
}
}
});
当我加载我的页面网站.com/signup 时,上面的工作原理很好
当然,它之所以有效,是因为jQuery能够找到"username"字段并对blur执行操作(我可以通过查看html源代码来验证这一点(。
现在,如果"username"字段没有在html中呈现呢?当我在ajax页面加载上加载注册页面时,就会发生这种情况,在这种情况下,浏览器根本不知道"用户名"字段,即使它以视觉方式显示它。
总结快乐之路->
我加载->site.com/signup我查看源->id为"username"的字段可见如果用户名已经存在,On blur事件将触发并显示消息。
总结问题->
**1**我转到->site.com/some_page在这个页面中,我点击site.com/signup
**2**现在some_page的内容通过ajax替换,我看到了我的"注册"表单字段。
**3**查看源->我过去在快乐路径场景中看到的"用户名"现在不再出现在html源中;
**4**也许是因为html源中没有"username",现在当我模糊用户名时,什么都不会发生。jQuery不会被调用,也不会检查现有的用户名。
有没有一个特殊的函数告诉jQuery"查找"或"加载"用户名"字段?
请帮忙!谢谢
在您的情况下,您需要更改:
$('#signup_form').find('#username').blur(function() {
至:
$('body').on('blur', '#username', function() {
^^^^^^^^^ the element you want to register the event of
^^^^ any containing element that already exists on page load