在 Java 脚本验证中 使用 keyup 进行验证在 mozilla 中不起作用

In Java Script validation Using keyup for validating is not working in mozilla

在 jquery 表单验证中,keyup 在 mozilla 中不起作用,但在 chrome 中工作正常。

这里是Javascript代码

function validate() {  
    var msg;  
    if(document.myForm.userPass.value.length>5)
        msg="good";  
    else
        msg="poor";  
    document.getElementById("mylocation").innerText=msg;  
}  

这里是html代码

<form name="myForm"> 
<input type="password" value="" name="userPass" onkeyup="validate()">   
Strength:<span id="mylocation">no strength</span>  
</form>  

从这个 answer 可以看出 Firefox 不接受 innerTextinnerHTML 来设置一个值,而需要 textContent 来设置一个值 。因此,如果浏览器是 Firefox

,请使用 textContent 设置您的值

DEMO

function validate() {  
    var msg;  
    if(document.myForm.userPass.value.length>5){  
        msg="good";  
    }  
    else{  
        msg="poor";  
    }  
    var f=navigator.userAgent.search("Firefox"); //check if browser if FF
    if(f>-1)
        document.getElementById("mylocation").textContent=msg //if yes use this
    else
        document.getElementById("mylocation").innerText=msg //else normal approach
}  

Note :- As I suggested in comment use onkeypress instead of onkeyup for key press and hold events validation.

DEMO

要识别不同的浏览器,您可以使用来自 this answer

的以下代码
function checkBrowser(){
    c=navigator.userAgent.search("Chrome");
    f=navigator.userAgent.search("Firefox");
    m8=navigator.userAgent.search("MSIE 8.0");
    m9=navigator.userAgent.search("MSIE 9.0");
    if (c>-1){
        brwsr = "Chrome";
    }
    else if(f>-1){
        brwsr = "Firefox";
    }else if (m9>-1){
        brwsr ="MSIE 9.0";
    }else if (m8>-1){
        brwsr ="MSIE 8.0";
    }
    return brwsr;
}

尝试使用 jquery,它将在每个浏览器中工作

function validate() {  
console.log("validation start");
    var msg;  
    if($("input[name='userPass']").val().length >5)
        console.log("good");//msg="good";  
    else
       console.log("poor");// msg="poor";  
    document.getElementById("mylocation").innerText=msg;  
}