[英]Saving an input value so that if a user leaves blank it reverts back to default
我试图创建一个变量oldValue
,然后如果当前值=== ""
那么它将更改回oldValue
,因为我使用for
循环,我可以明确说出该值是什么。
代码正在改变input
元素周围的div
,这就是.parentNode
的原因
任何人都可以告诉我如何获得输入值并保存它,或者我的代码出错了。
var inputFocus = function(){
var inputs = document.getElementsByClassName("inputNoFocus");
for (i = 0; i < inputs.length; i++){
var input = inputs[i];
var oldValue = this.value;
input.addEventListener("focus", function(){
if(this.value === this.value){
this.value = "";
}
this.parentNode.parentNode.setAttribute("class", "inputFocus");
}, false);
input.addEventListener("blur", function(){
if(this.value === ""){
this.value = oldValue;
}
this.parentNode.parentNode.setAttribute("class", "noHover");
}, false);
}
}();
我不确定你要做什么,但是根据我的理解 - 事件监听器中函数中this.value的值将返回null
- 理由是JavaScript中的作用域。 this.value
的值的范围将在父函数中,而不是在事件列表匿名函数中定义的函数。
尝试阅读http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting您将了解范围以及您可能出错的原因或位置。
尝试这个:
(function() {
var inputs = document.getElementsByClassName("inputNoFocus");
function setEmptyVal() {
if (this.value == this.defaultValue) this.value = "";
this.parentNode.parentNode.setAttribute("class", "inputFocus");
}
function setDefaultVal() {
if (this.value == "") this.value = this.defaultValue;
this.parentNode.parentNode.setAttribute("class", "noHover");
}
for (i=0; i<inputs.length; i++) {
var input = inputs[i];
input.defaultValue = input.value;
input.addEventListener("focus", setEmptyVal, false);
input.addEventListener("blur", setDefaultVal, false);
}
})();
这是小提琴 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.