gpt4 book ai didi

生成密码输入框的 jQuery 模糊和焦点问题

转载 作者:行者123 更新时间:2023-12-01 04:56:49 27 4
gpt4 key购买 nike

我正在构建一个 jQuery 表单验证插件。该脚本使用 title 属性来标记输入字段。这导致将输入密码替换为输入文本,以使字段标题可读。

$(FormID).find('input:password').each(function() {  
$("<input type='text'>").attr({ name: this.name, value: this.value, title: this.title, id: this.id }).insertBefore(this);
}).remove();

当我单击密码输入框时,它按预期工作。以下代码将文本输入替换为密码输入,删除标签,应用适当的样式和焦点。

$(":input").focus(function(){//Clears any fields in the form when the user clicks on them       
if ($(this).hasClass("va") ) {
$(this).val('');
$(this).removeClass("va").addClass('focused');
}
});
$(':input[title]').each(function() {//Add the title attribute to input fields and disappear when focused

if($(this).val() === '') {
$(this).val($(this).attr('title'));
}

$(this).focus(function() {
if($(this).val() == $(this).attr('title')) {
$(this).val('').addClass('focused');
}
if ($(this).attr('id')=="pass1" || $(this).attr('id')=="pass2") {
$("<input type='password'>").attr({ name: this.name, title: this.title, id: this.id }).insertAfter(this).prev().remove();
$("#"+$(this).attr('id')).focus().addClass('focused');
}
});

$(this).blur(function() {
if($(this).val() === '') {
$(this).val($(this).attr('title')).removeClass('focused');
}
if ($(this).attr('id')=="pass1" || $(this).attr('id')=="pass2") {
$("<input type='text'>").attr({ name: this.name, value: this.value, title: passtitle, id: this.id }).insertAfter(this).prev().remove();
$("#"+$(this).attr('id')).blur().removeClass('focused');
}
});
});

当用户在聚焦的输入框之外单击时,模糊功能不会触发。如何让它像其他表单元素一样模糊?

最佳答案

更新:在更彻底地重新阅读您的问题后,我正在更改我的答案。

您基本上是在尝试在输入未聚焦时使输入元素的“标题”出现在框中。这是很常见的事情,但你的方法已经过时了。我建议改用 HTML5“占位符”属性。它是任何现代浏览器的 native (我有一个针对旧浏览器和 IE 的解决方案)。但是,您仍然无法在密码字段中显示占位符文本。一般来说,我认为这实际上并不需要,甚至根本不应该这样做。密码字段的外观通常与普通文本字段略有不同,因此更改输入可能会导致轻微的显示故障。

要使用占位符,只需像这样构建您的输入:

<input name="username" placeholder="Username" type="text" />

“占位符”属性将用于填充输入中显示的文本,但它对输入的实际值没有影响。

为了修复 IE 缺乏支持的问题,我创建了以下内容 jquery placeholder plugin不久前在 github 上。

现在,这是一个完整的工作示例,它比您原来的解决方案更清晰。我已经在 FF17 和 IE9 中对其进行了测试。请注意,密码输入实际上是作为文本字段开始的,因此默认情况下将显示占位符。仅当用户聚焦并输入内容时,它才会更改为密码。

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<script src="jquery.placeholder.js" type="text/javascript"></script>
</head>

<body>
<form>
<input name="username" placeholder="Username" type="text" />
<input name="password" placeholder="Password" type="text" data-ispw="1" />
</form>
</body>

<script type="text/javascript">
$(function(){
// make sure to include the jquery.placeholder.js plugin before using this
$(':text[placeholder]').placeholder();
$('form').on({
focus: function(e){
// swap to password
$(this).prop('type', 'password');
},
blur: function(e){
var me = $(this);
if (me.val() == '') {
// swap to text; if no value is entered
me.prop('type', 'text');
}
}
}, ':input[data-ispw]')
});
</script>
</html>

让我重申一下,我不喜欢像这样交换密码输入的想法,但是嘿,每个人都有自己的密码输入!祝你好运!

关于生成密码输入框的 jQuery 模糊和焦点问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13793464/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com