我的网站建立在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>');
}
}
});
当我加载我的网页site.com/signup
时,上面工作正常当然,它有效,因为jQuery能够找到“用户名”字段并对模糊采取行动(我可以通过查看html源来验证)。
现在,如果“用户名”字段未在html中呈现,该怎么办?当我在ajax页面加载时加载我的注册页面时会发生这种情况,在这种情况下,浏览器根本不知道“用户名”字段,即使它在视觉上显示它。
总结快乐的道路 - &gt;
我加载 - &gt; site.com/signup 我查看来源 - &gt; ID为“username”的字段可见 如果用户名已存在,则触发模糊事件并显示消息。
总结问题 - &gt;
** 1 **我去 - &gt; site.com/some_page 在此页面中,我点击了site.com/signup
** 2 **现在some_page的内容被ajax替换,我看到了我的“注册”表单字段。
** 3 **查看来源 - &gt;我以前在快乐路径场景中看到的“用户名”现在不再出现在html源代码中;
** 4 **可能由于“用户名”不在html源代码中,现在当我在用户名上模糊时没有任何反应。 jQuery没有被调用,也没有检查现有的用户名。
是否有一个特殊的函数告诉jQuery“查找”或“加载”“用户名”字段?
请帮忙!感谢。
答案 0 :(得分:0)
在您的情况下,您需要更改:
$('#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