Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 表单验证onblur()不会';行不通_Javascript_Onblur - Fatal编程技术网

Javascript 表单验证onblur()不会';行不通

Javascript 表单验证onblur()不会';行不通,javascript,onblur,Javascript,Onblur,我有以下javascript代码(函数SHA-1位于外部文件中): 在html中: <form name="form" method="post" action="change_pass.php"> <div class="row"> <div class="col1">write your password:<span class="required">&#42;</span></div&

我有以下javascript代码(函数SHA-1位于外部文件中):

在html中:

    <form name="form" method="post" action="change_pass.php">
    <div class="row">
        <div class="col1">write your password:<span class="required">&#42;</span></div>
        <div class="col2">
            <input type="password" name="original_pass" id="oriPass" />
        </div>
    </div>
    </form>

写下你的密码:*;
出于某种原因,每次我测试它时,我都会得到相同的输出:“validpassword”,不管该字段是空的、有效的还是无效的


我在这里做错了什么?

您只在加载时设置密码变量。从那以后就再也不会改变了。您需要在onblur函数中设置它。

在onblur函数中移动
var user\u pass…
var hash\u pass…
代码。现在,只分配了onload,并且永远不会更改。另外,最好使用onchange而不是onblur

window.onload = validatePass;

function validatePass() {
    var el = document.getElementById("oriPass");


    var span = document.createElement("span");
    el.parentNode.appendChild(span); 

    el.onchange = function doSomething() {
        var user_pass = el.value;
        var hashed_pass = SHA1(user_pass);
        if(user_pass == null || user_pass == "") {
            span.setAttribute('class','required');
            span.innerHTML="this is a required field";
        }
        else {
            if(hashed_pass != '7c4a8d09ca3762af61e59520943dc26494f8941b') {
                span.setAttribute('class','required');
                span.innerHTML="wrong password";
            }
            else {
                span.setAttribute('class','required_ok');
                    span.innerHTML="valid password";    
                }
            }
    }
}

这在所有浏览器中都是一样的吗?你是如何“模糊”的?用鼠标点击或标签?它实际上在不同的浏览器中输出不同的东西,但输出不会改变
window.onload = validatePass;

function validatePass() {
    var el = document.getElementById("oriPass");


    var span = document.createElement("span");
    el.parentNode.appendChild(span); 

    el.onchange = function doSomething() {
        var user_pass = el.value;
        var hashed_pass = SHA1(user_pass);
        if(user_pass == null || user_pass == "") {
            span.setAttribute('class','required');
            span.innerHTML="this is a required field";
        }
        else {
            if(hashed_pass != '7c4a8d09ca3762af61e59520943dc26494f8941b') {
                span.setAttribute('class','required');
                span.innerHTML="wrong password";
            }
            else {
                span.setAttribute('class','required_ok');
                    span.innerHTML="valid password";    
                }
            }
    }
}