0

フィールド検証と 2 つの jQueryUI ダイアログの問題。

最初の jQUI ダイアログに登録フォームがあります。

AJAX を使用したユーザー名フィールドのフィールド検証。フィールドが検証に失敗した場合 (既に存在する場合)、PHP ファイルは数値 > 0 を返し、2 番目の jQueryUI ダイアログにエラー メッセージが表示されます。

ただし、ユーザーが 2 番目のダイアログを閉じると、すぐに再び開かれます。

何かご意見は?

$("#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 に答える