为什么我的.blur()代码只能处理第二次模糊?

时间:2012-09-01 20:02:55

标签: javascript jquery

我有一个输入,当用户输入内容时,我的脚本将信息发送到php脚本,该脚本返回是否可以使用输入的文本。

如果无法使用该文本,则会禁用提交按钮并向reult文本添加一个类。

问题很奇怪,ajax工作,返回结果,但除非你再次聚焦和模糊输入,否则按钮禁用和添加类不会发生。

这是我的代码:

$('#alias').blur(function() {
if ($('#alias').val()) {
    var aliascheck = $('#alias').val();
    $(".aliascheck").load('checkalias.php?alias='+aliascheck);

    var result = $('.aliascheck').text();
    if (result.indexOf("Taken") != -1) {
        $('#shorten').attr("disabled","disabled");
        $('.aliascheck').addClass('error');
    } else {
        $('#shorten').removeAttr("disabled");
        $('.aliascheck').removeClass('error');
    }
}
});

代码在此处显示:http://markhenderson.ws/dev/tmtmu/ 要复制“已拍摄”事件,请输入“已拍摄”作为别名。其他任何东西都会返回。

有谁知道为什么会这样?

由于

1 个答案:

答案 0 :(得分:1)

您需要将.load调用后的代码放入异步调用的回调函数中。

类似的东西:

$('#alias').blur(function() {
if ($('#alias').val()) {
    var aliascheck = $('#alias').val();
    $(".aliascheck").load('checkalias.php?alias='+aliascheck, function() {
        var result = $('.aliascheck').text();
        if (result.indexOf("Taken") != -1) {
            $('#shorten').attr("disabled","disabled");
            $('.aliascheck').addClass('error');
        } else {
            $('#shorten').removeAttr("disabled");
            $('.aliascheck').removeClass('error');
        }

    });


}
});