Javascript工作正常,但在jQuery中没有

Javascript工作正常,但在jQuery中没有,javascript,jquery,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 us

这段代码在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吗?

您的onblur正在调用check\u,但是您的另一个jQuery示例的函数名是checkUser

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

而不是

$("#errorname").hide()
试一试

设置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的可见性设置为


演示:

浏览器控制台中是否有错误?您是否引用了jQuery库?当我第一次没有输入任何输入时,您的方法名似乎是错误的onBlur=check\u和checkusers显示错误消息。它显示的错误消息是什么?控制台中没有显示错误。我在这里编辑了函数以避免歧义。我的错误消息,即用户将字段留空时我的自定义错误消息。否。我的程序中有check_,但我在这里编辑了checkUser以避免歧义。有人可能会说我使用了两次相同的函数号。您是否引用了jQuery库?我把你的代码放进一个页面,它对我来说很有用。Jason说我对HTML和HIDE函数有问题。这可能是我的解决方案。这其实不重要。清除它或不显示它不是他的问题。他的问题是事件没有触发。当它被隐藏时,我会做什么来改变它的内容?实际上Jason是对的。如果隐藏它,则设置display:none;所以它再也不会出现了。你得打电话给一个节目把它带回来。或者,不要调用hide,只需清除它。@JackMarchetti:如果我在If语句中使用.show,那么如果div在之前没有隐藏,那么它会导致任何问题吗?对可见字段调用show不会导致任何问题,但只需使用Jason的示例将HTML设置为。这会解决你的问题。谢谢。这也有帮助。
$("#errorname").html('<div id = "error_left"></div>'+
   '<div id = "error_right"><p>This is a required field</p></div>').show();