繁体   English   中英

jQuery:焦点/模糊事件在输入替换后不起作用

[英]jquery: focus/blur events don't work after input replacement

我有一个具有以下属性的简单输入元素:

<input id="InputPassword" type="password" value="Password" class="initClass"/>

为了为其设置跨浏览器占位符,我使用了testFocusBlur函数

function testFocusBlur(){
$('input').focus(function () {
    if($(this).attr('type')=='text'){
       var campoPassword=$(this);
       replaceInputType(campoPassword[0], 'password')
    }
}).blur(function () {
    if($(this).attr('type')=='password'){
    var campoPassword=$(this);
    replaceInputType(campoPassword[0], 'text')
    }
});
$('input').blur();

}

在$(document).ready事件中:

  1. 在输入元素上调用blur事件;
  2. 如果type = password,请调用replaceInputType javascript函数;
  3. replaceInputType函数创建一个新的dom输入元素,为其设置type = text,获取旧输入元素的属性并将该类从initClass更改为newClass;
  4. 将新输入元素附加到同一div

上面的方法可以正常工作,但是,一旦设置了新的输入元素,并且我专注于此,初始的testFocusBlur函数就不再起作用

参见: http : //jsfiddle.net/4tRzs/2/

注意:我不想在输入中设置内联函数,例如onfocus =“ ....”

请帮忙,谢谢。

您需要使用jQuery中的on函数

$(document).on("focus" , "input", function(){
   ...
}

on是旧的live功能。 文件资料

您的函数中将具有以下内容:

function testFocusBlur(){
$(document).on("focus", 'input', function () {
    if($(this).attr('type')=='text'){
       var campoPassword=$(this);
       replaceInputType(campoPassword[0], 'password')
    }
})
$(document).on("blur", "input", function () {
    if($(this).attr('type')=='password'){
    var campoPassword=$(this);
    replaceInputType(campoPassword[0], 'text')
    }
});
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM