Javascript 单击链接时停止模糊事件
我试图使用JQuery事件在文本框中隐藏ssn或其他敏感信息Javascript 单击链接时停止模糊事件,javascript,jquery,Javascript,Jquery,我试图使用JQuery事件在文本框中隐藏ssn或其他敏感信息 $('#txtMasked').keyup(函数(e){ e、 预防默认值(); var val=此.value.replace(/\D/g'); var newVal=''; 如果(值长度>4){ this.value=val; } 如果((val.length>3)和(&(val.length5){ newVal+=val.substr(0,3)+'-'; newVal+=val.substr(3,2)+'-'; val=val
$('#txtMasked').keyup(函数(e){
e、 预防默认值();
var val=此.value.replace(/\D/g');
var newVal='';
如果(值长度>4){
this.value=val;
}
如果((val.length>3)和(&(val.length<6)){
newVal+=val.substr(0,3)+'-';
val=val.substr(3);
}
如果(值长度>5){
newVal+=val.substr(0,3)+'-';
newVal+=val.substr(3,2)+'-';
val=val.substr(5);
}
newVal+=val;
this.value=newVal;
});
$('#lnk')。单击(函数(e){
if($('#txtMasked').attr('type')=='password'){
$('#txtMasked').attr('type','text');
$(this.text('Hide');
$(this.prop('title','Hide');
}否则{
$('#txtMasked').attr('type','password');
$(this.text('Show');
$(this.prop('title','Show');
}
返回false;
})
var显示=功能(ev){
$('#txtMasked').attr('type','text');
$('#lnk').text('Hide');
$('lnk').prop('title','Hide');
},
隐藏=功能(ev){
$('#txtMasked').attr('type','password');
$('lnk')。文本('Show');
$('lnk').prop('title','Show');
};
$(#txtMasked')。焦点(show);
$('#txtMasked').blur(隐藏);
当焦点事件被触发时,文本将被解除屏蔽,并且可以通过触发模糊或链接事件将其屏蔽
触发焦点并单击链接时,也会触发模糊。因此,它混淆了链接单击事件,因此文本永远不会被屏蔽
我在互联网上搜索过,但我找不到一种方法来阻止这两个事件同时触发
我试过了,但在我的情况下不起作用
请问有人能帮忙吗
感谢所有帮助请尝试此代码,它将在单击链接时停止模糊事件
$('#lnk').click(function (e) {
e.stopImmediatePropagation();
$(this).off("blur");
if ($('#txtMasked').attr('type') === 'password') {
$('#txtMasked').attr('type', 'text');
$(this).text('Hide');
$(this).prop('title', 'Hide');
}
else {
$('#txtMasked').attr('type', 'password');
$(this).text('Show');
$(this).prop('title', 'Show');
}
return false;
})
在发生模糊事件时触发hide()
之前,可以检查#lnk是否是聚焦元素
$('#txtMasked').blur(function() {
if (!$("#lnk")==$(document.activeElement)) {
hide();
}
});
试试这个
$('#txtMasked').keyup(函数(e){
e、 预防默认值();
var val=此.value.replace(/\D/g');
var newVal='';
如果(值长度>4){
this.value=val;
}
如果((val.length>3)和(&(val.length<6)){
newVal+=val.substr(0,3)+'-';
val=val.substr(3);
}
如果(值长度>5){
newVal+=val.substr(0,3)+'-';
newVal+=val.substr(3,2)+'-';
val=val.substr(5);
}
newVal+=val;
this.value=newVal;
});
$('#lnk')。单击(函数(e){
if($('#txtMasked').attr('type')=='password'){
$('#txtMasked').attr('type','text');
$(this.text('Hide');
$(this.prop('title','Hide');
}否则{
$('#txtMasked').attr('type','password');
$(this.text('Show');
$(this.prop('title','Show');
}
返回false;
})
var显示=功能(ev){
$('#txtMasked').attr('type','text');
$('#lnk').text('Hide');
$('lnk').prop('title','Hide');
},
隐藏=功能(ev){
$('#txtMasked').attr('type','password');
$('lnk')。文本('Show');
$('lnk').prop('title','Show');
};
$(#txtMasked')。焦点(show);
$('#txtMasked').blur(函数(e){
试一试{
如果(e.relatedTarget.id!=“lnk”){
隐藏();
}
}捕获(错误){
隐藏();
}
});代码>
将以下代码片段添加到脚本中
var is_blur=false;
$(document).click(function(e){
if(e.target.id!='lnk'){
is_blur=false;
}
});
将“lnk”单击事件更改为以下内容
$('#lnk').click(function (e) {
if(is_blur){
is_blur=false;
return;
}
if ($('#txtMasked').attr('type') === 'password') {
$('#txtMasked').attr('type', 'text');
$(this).text('Hide');
$(this).prop('title', 'Hide');
} else {
$('#txtMasked').attr('type', 'password');
$(this).text('Show');
$(this).prop('title', 'Show');
}
return false;
})
hide = function (ev) {
$('#txtMasked').attr('type', 'password');
$('#lnk').text('Show');
$('#lnk').prop('title', 'Show');
is_blur=true;
};
将隐藏功能更改为以下内容
$('#lnk').click(function (e) {
if(is_blur){
is_blur=false;
return;
}
if ($('#txtMasked').attr('type') === 'password') {
$('#txtMasked').attr('type', 'text');
$(this).text('Hide');
$(this).prop('title', 'Hide');
} else {
$('#txtMasked').attr('type', 'password');
$(this).text('Show');
$(this).prop('title', 'Show');
}
return false;
})
hide = function (ev) {
$('#txtMasked').attr('type', 'password');
$('#lnk').text('Show');
$('#lnk').prop('title', 'Show');
is_blur=true;
};
希望这些能帮助你
这不起作用,需要通过触发单击事件来停止模糊事件。好的,让我再次检查