在当前页面上调用ajax后,jQuery不会触发

时间:2014-05-01 01:31:51

标签: javascript php jquery ajax

我的网站建立在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“查找”或“加载”“用户名”字段?

请帮忙!感谢。

1 个答案:

答案 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