2

PHPプロセスの前に単純なフォームを検証しようとしています。すべての入力を空にするとフォームは停止しますが、同じページに留まってすべての入力を入力すると、フォームは送信されません。

戻り値は false だと思います。最初の検証のままです。私は初心者です:)

したがって、ここに抜粋があります:

HTML

<input onblur="validName();" type="text"  name="name" id="name">
<textarea id="message" name="message" onblur="validMess();" rows="5"></textarea>

<input type="submit" name="submit" onclick="validSubmit();" value="send">

Jクエリ

function validSubmit() {
var message = $("#message").val();
var name = $("#name").val();

    if( name == ''){
        $("#valid-name").removeClass('hide'); // if empty = show error message
        $("#form").submit(function(e){
            return false;
        });
    }
    else {
        $("#valid-name").addClass('hide'); // all good = hide error message
        $("#form").submit(function(e){
            return true;
        });
    }


    if(message == ''){
        $("#valid-mess").removeClass('hide'); // if empty = show error message
        $("#form").submit(function(e){
            return false;
        });
    }
    else { 
        $("#valid-mess").addClass('hide'); // all good = hide error message
        $("#form").submit(function(e){
            return true;
        });
    }

}

ID : valid-name と valid-mess は、表示するように設定された 2 つのエラー メッセージです。デフォルトで。

私は少し迷っています。答えはJSまたはJqueryで構いません。

お時間をいただきありがとうございます。

4

1 に答える 1

2

submitコールバックから呼び出さないでください。問題がある場合submitは単に戻りますfalse:

function validSubmit() {
    var message = $("#message").val();
    var name = $("#name").val();
    $("#valid-name,#valid-mess").addClass('hide');
    var ok = true;
    if (name == ''){
        $("#valid-name").removeClass('hide');
        ok = false;
    }
    if (message == ''){
        $("#valid-mess").removeClass('hide');
        ok = false;
    }
    return ok;
}

また、Barmar が指摘したように、これは検証をバインドする最良の方法ではありません。クリックイベントにバインドする代わりに、使用することをお勧めします

$('#id_of_the_form').submit(validSubmit);
于 2013-05-26T21:15:52.530 に答える