-4

这段代码在 Javascript 中对我来说很好用。

function check_u() {
    var errormessage = document.getElementById("errorname");
    var user = document.forms["login"]["user"].value;
    if (user == null || user == "") {
        errormessage.innerHTML = "Please enter your user id";
    } else {
        errormessage.innerHTML = "";
    }
}
function check_p() {
    var errormessage = document.getElementById("errorpass");
    var pass = document.forms["login"]["password"].value;
    if (pass == null || pass == "") {
        errorShow.innerHTML = "Password cannot be blank";
    } else {
        errorShow.innerHTML = "";
    }
}

我的html是:

<input type="text" name="user" autocomplete="off" onBlur="check_u()" />
<input type="text" name="password" autocomplete="off" onBlur="check_p()" />
<div id="errorname" />

我已经在 jQuery 中为此代码编写了一个替代方案。在 JavaScript 中它工作正常,但在 jQuery 中,当我第一次不输入任何输入时,它会显示错误消息。我给它输入一些值,然后它会清除错误消息。现在,如果我将输入留空,则不会显示错误消息。这是我的 jQuery 代码:

function check_u(){
            var fieldValue = $("input[name=user]").val();
    if(fieldValue==""||fieldValue==null){
                    $("#errorname").html('<div id = "error_left"></div>'+
       '<div id = "error_right"><p>This is a required field</p></div>');
            }else{
                    $("#errorname").hide();
            }
        }

为什么,如果重复调用,我的 errorname div 不显示?

.hide() 不仅仅是清除 div 吗?

4

3 回答 3

1

在 javascript else 子句中,您正在清除内容,但在 jQuery 子句中,您将隐藏整个错误元素。

代替

$("#errorname").hide()

尝试

$("#errorname").html("")
于 2013-02-23T04:33:53.977 回答
1

errorname设置好html后需要显示

$("#errorname").html('<div id = "error_left"></div>'+
   '<div id = "error_right"><p>This is a required field</p></div>').show();

如果输入有效,您将隐藏errornamediv,然后如果值变为无效,则需要设置错误消息并将 div 的可见性设置为。

演示:Plunker

于 2013-02-23T04:44:25.883 回答
0

您的 onblur 正在调用check_u(),但您的其他 jQuery 示例的函数名称是checkUser()

于 2013-02-23T04:33:47.793 回答