保存一个输入值,这样,如果用户留空,它将恢复为默认值

Saving an input value so that if a user leaves blank it reverts back to default

本文关键字:用户 默认值 恢复 如果 这样 一个 输入 保存      更新时间:2023-09-26

我尝试创建一个变量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);
}
}();

试试这个:

(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);
  }
})();

这是小提琴。

我不确定你想做什么,但根据我的理解——事件监听器中函数中this.value的值将返回null——原因是JavaScript中的作用域。值CCD_ 9的作用域将在父函数中而不是在eventlisters匿名函数中定义的函数中。

尝试阅读http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting你会理解范围界定,以及为什么或在哪里你可能会出错。