我想要一些像 windows live 上的登录框一样的东西。我在其中看到标签的框,然后当用户开始输入时标签消失。
我只能找到使用 jQuery 的解决方案。有谁知道一些不需要我加载 jQuery 的 javascript/CSS 解决方案?我的意思不是 HTML5 中的占位符属性。我想要一些可以在大多数浏览器中使用的东西,而不仅仅是新浏览器。
我想要一些像 windows live 上的登录框一样的东西。我在其中看到标签的框,然后当用户开始输入时标签消失。
我只能找到使用 jQuery 的解决方案。有谁知道一些不需要我加载 jQuery 的 javascript/CSS 解决方案?我的意思不是 HTML5 中的占位符属性。我想要一些可以在大多数浏览器中使用的东西,而不仅仅是新浏览器。
https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills 对于这些插件中的大多数,您只需去掉 jquery 部分并将其用作独立的
你可以自己动手……这是我一起完成的一个 JSFiddle。http://jsfiddle.net/VF8Dr/
CSS
.placeholder {
color: gray;
position: absolute;
padding-left: 10px;
}
JS
function addPlaceholder(id, text) {
var elm = document.getElementById(id);
var ph = document.createElement("SPAN");
ph.className = "placeholder";
ph.innerHTML = text;
elm.parentNode.insertBefore(ph, elm.nextSibling);
ph.style.left = elm.offsetLeft + 'px';
ph.style.top = elm.offsetTop + 'px';
ph.onclick = function() {
ph.style.display = 'none';
elm.focus();
};
elm.onfocus = function() {
if(ph.style.display != 'none')
ph.style.display = 'none';
};
elm.onblur = function() {
if(elm.value == '')
ph.style.display = '';
};
}
addPlaceholder("demo", "my text");
显然,它没有经过广泛的测试,但如果你固执地不使用像 jQuery 这样的框架(或者只是避免不必要的膨胀),但仍然想要跨浏览器和旧浏览器的兼容性,这将帮助你实现目标。
这是我过去使用的:
activatePlaceHolder: function() {
var detect = navigator.userAgent.toLowerCase();
if (detect.indexOf("msie") < 0) return false;
var inputs = document.getElementsByTagName("input");
var inputLen = inputs.length;
for (var i = 0; i < inputLen; i++) {
if (inputs[i].getAttribute("type") == "text") {
if (inputs[i].getAttribute("placeholder") && inputs[i].getAttribute("placeholder").length > 0) {
inputs[i].value = inputs[i].getAttribute("placeholder");
inputs[i].onclick = function() {
if (this.value == this.getAttribute("placeholder")) {
this.value = "";
}
return false;
}
inputs[i].onblur = function() {
if (this.value.length < 1) {
this.value = this.getAttribute("placeholder");
}
}
}
}
}
}