Javascript 如何使用星号创建jquery提示密码

Javascript 如何使用星号创建jquery提示密码,javascript,jquery,Javascript,Jquery,例如: 目前,密码不是星号,因为密码文本字段的“type”必须是type=“text”,因此不能将其更改为type=“password”,如果我想要星号,这是必需的。如何让jquery提示和星号一起工作您可以利用新的HTML5属性,称为占位符。不需要Javascript <input type="password" name="password" placeholder="Enter password" size="20" /> 演示:您可以利用名为占位符的新HTML5属性。不

例如:


目前,密码不是星号,因为密码文本字段的“type”必须是type=“text”,因此不能将其更改为type=“password”,如果我想要星号,这是必需的。如何让jquery提示和星号一起工作

您可以利用新的HTML5属性,称为
占位符
。不需要Javascript

<input type="password" name="password" placeholder="Enter password" size="20" />


演示:

您可以利用名为
占位符的新HTML5属性。不需要Javascript

<input type="password" name="password" placeholder="Enter password" size="20" />


演示:

看看这个GitHub页面。我想这就是你想要的


请查看此GitHub页面。我想这就是你想要的


这是暗示的糟糕实现。首先,如果有人提交了一个空表单,那么他们实际上会提交“用户名”和“密码”作为参数,并且在服务器端过滤这些参数会很烦人

最好只使用
占位符
属性:


编辑:


如果您需要它来支持不支持html5
占位符属性的旧浏览器,您可以添加这个js:

,这是一个糟糕的暗示实现。首先,如果有人提交了一个空表单,那么他们实际上会提交“用户名”和“密码”作为参数,并且在服务器端过滤这些参数会很烦人

最好只使用
占位符
属性:


编辑:


如果您需要它来支持不支持html5
占位符属性的旧浏览器,您可以添加这个js:

如果您不想使用html5占位符,您可以使用“常规”JavaScript:
input.type='password'
更改输入的类型。看看。

如果您不想使用HTML5占位符,可以使用“常规”JavaScript更改输入类型:
input.type='password'
。查看。

使用占位符属性。当然,这在IE中不起作用,有很多解决方案可以克服IE缺乏支持的问题。其中大多数都不是很好,尤其是那些更改输入元素值以完成占位符文本的操作。这种方法有缺陷,并且存在可访问性问题

更好的方法是使用不修改输入值的技术。它应该能够自动处理已经使用了
占位符
属性的表单,而不需要对标记进行其他更改。我使用的技术是在输入后面放置一个标签,以便通过输入显示。当输入具有焦点或值时,它将获得背景色以隐藏占位符标签

首先,我检查浏览器是否本机支持
占位符
。此代码告诉我们是否支持占位符:

if (!("placeholder" in document.createElement("input"))) {
    // placeholder is not natively supported
}
如果不支持
占位符
,我会在每个具有
占位符
属性的
之前插入一个绝对定位的
,并向输入中添加一个
noplaceholder
类,指示占位符本机不受支持,标签应该通过输入显示。我使用CSS来设置标签的样式以匹配输入,并降低输入的不透明度,以便标签显示出来。剩下的只是非常简单的事件处理,根据输入是否有焦点和/或值来添加或删除
noplaceholder

这是我的密码。将以下CSS和JavaScript放到使用占位符属性的现有页面中,它应该可以工作。CSS可能需要稍加调整才能在页面上正常工作

演示:

CSS:

输入[placeholder],.placeholder{
字体系列:无衬线;
边框:1px实心#b2b2b2;
边界半径:3px;
填充物:2px4px;
垂直对齐:中间对齐;
字号:1em;
线高:1米;
}
.placeholder+输入[placeholder].noplaceholder{
过滤器:α(不透明度=100);
背景色:#fff;
边框颜色:#b2b2b2;
}
.占位符+输入[占位符]{
位置:相对位置;
过滤器:α(不透明度=50);
边框颜色:#666;
}
.placeholder,label.placeholder{
边框颜色:#fff;
位置:绝对位置;
页边顶部:1px;
左边距:0;
顶部:自动;
}
JavaScript:

if (!("placeholder" in document.createElement("input"))) {
    $(function() {
        $("input[placeholder]").each(function() {
            $("<label>")
                .attr("for", this.id)
                .addClass("placeholder")
                .text(this.getAttribute("placeholder"))
                .insertBefore(this);
            $(this).addClass("noplaceholder");
        }).on("keydown focus input", function() {
            $(this).addClass("noplaceholder");
        }).on("change blur", function() {
            if (!this.value) {
                $(this).removeClass("noplaceholder");
            }
        }).change();
        $("form").on("reset", function() {
            setTimeout(function() {
                $("input[placeholder]:not(:focus)").change();
            }, 0);
        });
    });
}
if(!(.createElement(“输入”)中的占位符){
$(函数(){
$(“输入[占位符]”)。每个(函数(){
$("")
.attr(“for”,this.id)
.addClass(“占位符”)
.text(此.getAttribute(“占位符”))
.在此之前插入;
$(此).addClass(“noplaceholder”);
}).on(“按键下焦点输入”,函数(){
$(此).addClass(“noplaceholder”);
}).on(“更改模糊”,函数(){
如果(!this.value){
$(此).removeClass(“noplaceholder”);
}
}).change();
$(“形式”)。在(“重置”,函数()上{
setTimeout(函数(){
$(“输入[占位符]:非(:焦点)”).change();
}, 0);
});
});
}

使用占位符属性。当然,这在IE中不起作用,有很多解决方案可以克服IE缺乏支持的问题。其中大多数都不是很好,尤其是那些更改输入元素值以完成占位符文本的操作。这种方法有缺陷,并且存在可访问性问题

更好的方法是使用不修改输入值的技术。它应该能够自动处理已经使用了
占位符
属性的表单,而不需要对标记进行其他更改。我使用的技术是在输入后面放置一个标签,以便通过输入显示。当输入具有焦点或值时,它将获得背景色以隐藏占位符标签