Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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事件?_Javascript_Html_Validation - Fatal编程技术网

如何处理两个javascript事件?

如何处理两个javascript事件?,javascript,html,validation,Javascript,Html,Validation,我正在尝试对表单中的密码字段进行一些验证检查。我正在调用一个函数onkeypress来检查capsLock是打开还是关闭,然后onblur函数检查密码字段值。但当我在密码字段中输入任何值时,onblur会立即与onkeypress一起运行。这违背了我检查capslock和字段值的目的 HTML: JavaScript: function chkPsw(inpsw){ var psw = inpsw.toLowerCase(inpsw); psw = trim(psw);

我正在尝试对表单中的密码字段进行一些验证检查。我正在调用一个函数
onkeypress
来检查capsLock是打开还是关闭,然后
onblur
函数检查密码字段值。但当我在密码字段中输入任何值时,onblur会立即与onkeypress一起运行。这违背了我检查capslock和字段值的目的

HTML:


JavaScript:

function chkPsw(inpsw){
    var psw = inpsw.toLowerCase(inpsw);
    psw = trim(psw);
    if (psw.length<4 || psw.length>15){
        alert ('password length can be min. 4 and max. 15 chars' );
        return false;
    }
    var p1=/^[a-z0-9_\-\!\@\$\%\&\(\)\{\}\[\]\<\>]+$/;/* a-z 0-9 _ - ! @ $ % & ( ) { } [ ] < > */
    if(p1.test(psw)) {
        alert("The password:::: "+psw+" :::: is ok.");
        return true;
    } else {
        var p2 = /\s+/;
        if (p2.test(psw)){
            alert(psw+" is not ok. Space is not allowed.");
            return false;
        } else{
            alert(psw+"\n is not ok only a-z 0-9 _ - ! @ $ % & ( ) { } [ ] < > ");
            return false;
        }
    }
}


function checkCapsLock( e ) {
    var myKeyCode=0;
    var myShiftKey=false;
    var myMsg='Caps Lock is On.\n\nTo prevent entering your password incorrectly,\nyou should press Caps Lock to turn it off.';

    // Internet Explorer 4+
    if ( document.all ) {
        myKeyCode=e.keyCode;
        myShiftKey=e.shiftKey;
    }

    if ( ( myKeyCode >= 65 && myKeyCode <= 90 ) && !myShiftKey ) {
        alert( myMsg );
        return false;
    } else if ( ( myKeyCode >= 97 && myKeyCode <= 122 ) && myShiftKey ) {
        alert( myMsg );
        return false;
    } else {
        return true;
    }
}
功能chkPsw(inpsw){
var psw=inpsw.toLowerCase(inpsw);
psw=配平(psw);
如果(psw.长度15){
警报(“密码长度至少可以是4个字符,最多可以是15个字符”);
返回false;
}
变量p1=/^[a-z0-9\\-\!\@\$\%\&(\)\{\\\[\]\]+$/;/*a-z 0-9-!@$%&({}[]<>*/
如果(p1.试验(psw)){
警报(“密码::“+psw+”::::::正常”);
返回true;
}否则{
变量p2=/\s+/;
if(p2.试验(psw)){
警报(psw+“不正常。不允许有空格。”);
返回false;
}否则{
警报(psw+“\n不正常,仅a-z 0-9-!@$%&(){}[]<>”;
返回false;
}
}
}
功能检查CapsLock(e){
var myKeyCode=0;
var myShiftKey=false;
var myMsg='Caps Lock已打开。\n\n要防止错误输入密码,\n应按Caps Lock将其关闭。';
//Internet Explorer 4+
如果(document.all){
myKeyCode=e.keyCode;
myShiftKey=e.shiftKey;
}

如果((myKeyCode>=65&&myKeyCode=97&&myKeyCode那么,问题是您正在使用警报框通知用户(不好的做法,令人讨厌),这会导致密码字段失去焦点

解决方案?使用布尔条件

下面是一个jQuery示例(我正在清理您的代码)

jsFiddle:

jQuery.fn.caps=函数(cb){
返回此。按键(功能(e){
var w=e.which?e.which:(e.keyCode?e.keyCode:-1);
var s=e.shiftKey?e.shiftKey:(e.modifiers?!!(e.modifiers&4):false);

变量c=((W>=65 & & W=97和& W @ RAHUL。第一对行没有正确的缩进。你能解决吗?你真的应该考虑使用JavaScript库,Netscape 4/6和IE 4?谁可能会使用它?!@ AmitG,它可能是复制意大利面。”Rahul Utb:我想知道是谁投票给我的,这对我来说似乎是个好问题。但是,我不能拒绝。除了这个错误,当我键入@Vivin agreement@Juan时,我没有看到onblur正在运行。我试图修复他的代码,但是jsFiddle被它卡住了。
function chkPsw(inpsw){
    var psw = inpsw.toLowerCase(inpsw);
    psw = trim(psw);
    if (psw.length<4 || psw.length>15){
        alert ('password length can be min. 4 and max. 15 chars' );
        return false;
    }
    var p1=/^[a-z0-9_\-\!\@\$\%\&\(\)\{\}\[\]\<\>]+$/;/* a-z 0-9 _ - ! @ $ % & ( ) { } [ ] < > */
    if(p1.test(psw)) {
        alert("The password:::: "+psw+" :::: is ok.");
        return true;
    } else {
        var p2 = /\s+/;
        if (p2.test(psw)){
            alert(psw+" is not ok. Space is not allowed.");
            return false;
        } else{
            alert(psw+"\n is not ok only a-z 0-9 _ - ! @ $ % & ( ) { } [ ] < > ");
            return false;
        }
    }
}


function checkCapsLock( e ) {
    var myKeyCode=0;
    var myShiftKey=false;
    var myMsg='Caps Lock is On.\n\nTo prevent entering your password incorrectly,\nyou should press Caps Lock to turn it off.';

    // Internet Explorer 4+
    if ( document.all ) {
        myKeyCode=e.keyCode;
        myShiftKey=e.shiftKey;
    }

    if ( ( myKeyCode >= 65 && myKeyCode <= 90 ) && !myShiftKey ) {
        alert( myMsg );
        return false;
    } else if ( ( myKeyCode >= 97 && myKeyCode <= 122 ) && myShiftKey ) {
        alert( myMsg );
        return false;
    } else {
        return true;
    }
}
jQuery.fn.caps = function(cb){
    return this.keypress(function(e){
        var w = e.which ? e.which : (e.keyCode ? e.keyCode : -1);
        var s = e.shiftKey ? e.shiftKey : (e.modifiers ? !!(e.modifiers & 4) : false);
        var c = ((w >= 65 && w <= 90) && !s) || ((w >= 97 && w <= 122) && s);
        cb.call(this, c);
    });
};

var alerting = false;

$('#password').caps(function(caps){
    if(caps){
        alerting = true;
        alert('Unintentional uppercase leads to wars!');
       }
});

$('#password').blur(function() {
    if(alerting == false && !this.value.match(/^[a-z0-9_\-\!\@\$\%\&\(\)\{\}\[\]\<\>]+$/)) {
        alert("Abort! Invalid character detected!");
    }
    alerting = false;
});