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">

查询

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;
        });
    }

}

IDs:valid-name 和 valid-mess 是设置为显示的两条错误消息:无;默认。

我有点迷茫,答案可以是 JS 或 Jquery 我不介意。

感谢您的时间。

4

1 回答 1

2

不要submitsubmit回调中调用,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 回答