jQuery - 如果为空,则将输入值设置为模糊时的先前值

标签 jquery blur

我花了几个小时来解决这个问题,但找不到任何帮助,所以放弃了。我只是想恢复输入框的先前值,如果用户将其清除并且在输入失去焦点时不留下任何内容。例如,如果我的输入框中显示“澳大利亚布里斯类”,并且用户从输入中删除该文本,然后按 Tab 键,我希望它将输入恢复为“澳大利亚布里斯类”。这是我的代码:

$('input#search-location').on("focus", function() {
  $(this).data("previous-value", $(this).val());
}); 

$('input#search-location').on("blur", function() {
  if ($(this).val() == "") {
    // alert($(this).data("previous-value"));
    $(this).val($(this).data("previous-value"));
  }
}); 

两个事件都会触发,如果我取消注释模糊函数中的警报,它会正确显示以前的值。但我的输入框中没有显示任何内容,控制台中也没有错误。我想我错过了一些愚蠢的东西......我感谢任何帮助!

最佳答案

您的代码应该可以正常工作并在此处执行 Live Demo

请注意,您需要在页面元素呈现后执行代码,因此需要将代码包装在

$(function() { ... });

如果您想将其设置为页面加载时的默认值,请尝试

Live Demo

$('input#search-location').on("blur", function() {
  if ($(this).val() == "") {
    $(this).val(this.defaultValue);
  }
});

较新的浏览器会在此处给出提示:

<input placeholder="Type your name" />

您可以帮助旧版浏览器支持它

$(function() {
  if (!placeholderIsSupported) {
    $('#search-location1')
    .val($('#search-location1').attr("placeholder"))
    .on("blur", function() {
      if ($(this).val() == "") {
        $(this).val($(this).attr("placeholder"));
      }
    })
    .on("focus",function() {
      if ($(this).val()==$(this).attr("placeholder")) $(this).val("");
    });
  }  
});

function placeholderIsSupported() {
 var test = document.createElement('input');
 return ('placeholder' in test);
}

关于jQuery - 如果为空,则将输入值设置为模糊时的先前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17569192/

相关文章:

javascript - Spring roo——包括 jQuery

javascript - 单击其他元素时模糊(取消焦点)元素

java - RGB 模糊算法

c++ - Qt 模糊 QMovie(来自 gif)

python - 如何在 Matplotlib 中绘制模糊点

javascript - 在两个带有淡入淡出的 div 之间切换的最佳方法是什么?

jQuery UI Accordion 问题

javascript - Bootstrap 在本地主机上工作,但不在在线服务器上工作

javascript - 破坏bootbox