0

字段验证和两个 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");
            }
        }
    });
});
4

1 回答 1

1

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

尝试将focus()调用移至close对话框上的回调。您还可以尝试在输入旁边的跨度中而不是在对话框中显示消息,这样就不会发生焦点问题。

于 2013-07-08T17:47:36.030 回答