0

ある種のフォーム検証を行いました。ユーザーは、グループの名前とグループの説明を入力できます。jQueryを使用して、グループ名が空かどうか、空の送信ボタンを無効にする必要があるかどうかを検証しています。今、送信ボタンを無効にすることに問題があります。グループ名の入力タグをクリックすると、検証は問題なく、送信ボタンは無効になりますが、他に何も触れずに送信ボタンをクリックすると、jQueryは検証をスキップして送信ボタンを起動しますが、グループの名前は空です. jQueryで入力タグをフォーカスして設定しようとしましたが、実際にその入力タグをクリックした場合にのみ機能します。

送信ボタンは「saveGroup」ボタンです。

この入力タグでクリックイベントを呼び出す方法を誰かに教えてもらえますか、または他の検証手法を使用できます。

    <div class="newGroupDiv">
            <label>Title: </label><input type="text" id="groupTitle" onblur="checkTitle();"><br>
            <label>Description:</label><br>
            <textarea id="groupDescription"></textarea><br><br>    
            <button id="saveGroup">Save</button>
            <button id="cancelGroup">Cancel</button>
            <label id="groupError"></label>
        </div>

---------------------------------------------------------------------------------    

    $("#saveGroup").click(function(){
                var variable = checkTitle();
                if(variable == true){
                    if($("#groupError").html() == ""){
                        $(".columns").append('<ul class="'+ $("#groupTitle").val() +'"><li class="naslov">'+ $("#groupTitle").val() +'</li></ul>');
                        $("ul").sortable({containment : 'document', 
                            tolerance: 'pointer', 
                            cursor: 'pointer', 
                            revert: 'true', 
                            opacity : 0.6, 
                            connectWith : "ul", 
                            placeholder: 'border', 
                            items : 'li:not(.naslov)', 
                            start : function(){
                                check = false;
                                $(".readContent").fadeOut(300);
                            }, stop : function(){
                                check = true;
                            }}).disableSelection();

                        $.post("addGroup.php", {'title' : $("#groupTitle").val(), 'description' : $("#groupDescription").val(),
                        'color' : $("#colorHex").html(), 'color2' : $("#colorHex2").html()}, function(){
                            window.location.reload();
                        });
                    }
                }
            });


--------------------------------------------------------------------------------    


    var checkTitle = function(){
        $.post("checkTitle.php", {'title' : $("#groupTitle").val()}, function(data){
            if(data == 'exist') $("#groupError").html("Group already exists");
            if(data == 'no title') $("#groupError").html("Group title can't be empty");
            else if(data == 'ok') $("#groupError").html("");
        });
        return true;
    }

この「変数」を使用して、ある種のコールバック待機を達成しようとしたため、この変数が関数から結果を取得すると、残りのコードを続行する必要がありますが、機能するかどうかはわかりません。

4

1 に答える 1