Javascript工作正常但不是jQuery

时间:2013-02-23 04:25:28

标签: javascript jquery

此代码适用于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();
            }
        }

为什么,如果重复调用,我的错误名称div是否显示?

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

3 个答案:

答案 0 :(得分:1)

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

而不是

$("#errorname").hide()

$("#errorname").html("")

答案 1 :(得分:1)

您需要在设置html后显示errorname

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

如果有效条目,则隐藏errorname div,如果值无效,则需要设置错误消息并设置div的可见性。

演示:Plunker

答案 2 :(得分:0)

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