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

繰り返し呼び出した場合、エラー名の div が表示されないのはなぜですか?

.hide() は div をクリアするだけではありませんか?

4

3 に答える 3

1

JavaScriptのelse句では内容をクリアしていますが、jQuery句ではエラー要素全体を隠しています。

それ以外の

$("#errorname").hide()

試す

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

errornamehtmlを設定した後に表示する必要があります

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

errorname有効なエントリの場合は div を非表示にしています。値が無効になった場合は、エラー メッセージを設定し、div の可視性を設定する必要があります。

デモ:プランカー

于 2013-02-23T04:44:25.883 に答える
0

あなたのonblurは呼び出しcheck_u()ていますが、他のjQueryの例の関数名はcheckUser()

于 2013-02-23T04:33:47.793 に答える