3

我在这上面花了几个小时,找不到任何帮助,所以认输了。如果用户将其清除并且在输入失去焦点时什么都没有留下,我只是试图恢复输入框的先前值。因此,例如,如果它在我的输入框中显示“澳大利亚布里斯班”,并且用户从输入中删除该文本,然后按制表符,我希望它将输入恢复为“澳大利亚布里斯班”。这是我的代码:

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

这两个事件都会触发,如果我取消注释模糊函数中的警报,它会正确显示以前的值。但是我的输入框中什么都没有出现,控制台中也没有错误。我想这是我想念的愚蠢的东西......我很感激任何帮助!

4

1 回答 1

4

您的代码应该可以工作并且可以在此处进行实时演示

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

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

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

现场演示

$('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);
}
于 2013-07-10T11:19:44.580 回答