jQuery对话框不会停止重新打开

时间:2013-07-08 17:16:44

标签: ajax jquery jquery-ui-dialog

字段验证问题和两个jQueryUI对话框。

第一个jQUI对话框中有一个注册表单。

使用AJAX对用户名字段进行字段验证。如果字段验证失败(已存在),则PHP文件返回一个数字>零,并在第二个jQueryUI对话框中显示错误消息

但是,当用户关闭第二个对话框时,它会立即重新打开。

有什么想法吗?

$("#c_username").blur(function() {
    var uu = ($(this).val()).toLowerCase();
    $(this).val(uu); //in case user did not input as all lowercase
    $.ajax({
        type:'POST',
        url: 'ajax/ax_all_ajax_fns.php',
        data:'request=does_username_already_exist&username=' + uu,
        success: function(data) {
            if (data != 0) {
                $('#alert').html('Username <span style="font-weight:bold;color:darkgreen;">' +uu+ '</span> already exists. Please enter another.');
                $('#alert').dialog({
                    title: 'Username already exists:',
                    width: 400,
                    close: function() {
                        $(this).dialog('destroy');
                    }
                });
                $("#c_username").addClass('field_invalid').focus();
            }else{
                alert("Username is okay");
            }
        }
    });
});

1 个答案:

答案 0 :(得分:1)

$("#c_username").addClass('field_invalid').focus();将输入集中在对话框后面。单击对话框上的关闭按钮时,将再次引发输入的blur事件,从而导致另一个ajax调用,并打开另一个对话框。

尝试将focus()调用移至对话框上的close回调。您也可以尝试在输入旁边的范围内而不是在对话框中显示消息,这样就不会出现焦点问题。