【问题标题】:multiple default values for input field输入字段的多个默认值
【发布时间】:2012-06-04 11:55:07
【问题描述】:

我希望有一个搜索框输入字段,当不在焦点时闪烁多个默认值。如在 "New York" 中 3 秒,然后在 "Los Angeles" 中 3 秒等,或者模拟这些类型的输入也很好。

我做的是这个

http://jsfiddle.net/5aD7W/1/

但问题是 .val() 每隔 3 秒就会被覆盖一次,即使它处于焦点位置也是如此。

【问题讨论】:

  • 你为什么要这个?这听起来像是一个 UI 功能,可能会让您的用户感到困惑。
  • @RoryMcCrossan。该死的,我太喜欢比赛了,我是为他做的……:(
  • @gdoron 我知道这种感觉,你看到一个非常糟糕的问题,但你不得不找到一个解决方案:D
  • @Rory McCrossan 这是一个客户请求

标签: javascript jquery


【解决方案1】:

你可以这样做Demo on JsFiddle

在html中

<input id="txtCity" type="text" value="New York"  />​

输入脚本

  arr = ["New York", "Los Angesles", "London"];
txtCity = $('#txtCity');
i=0;
setInterval(function(){ 

    if (txtCity.is(':focus')) 
        return;   
    txtCity.val(arr[i++]);
    if(i==arr.length)
         i = 0;
}, 2000);

$('#txtCity').focus(function(){
    this.value=""
 });
​
​

【讨论】:

  • 几件事。 1. 您可以使用模块运算符 (%)。 2. 你不检查焦点。 3. 你不需要在每个间隔都查询元素,缓存它。
【解决方案2】:

我想出的一种方法:

var words = ['New York', 'Los Angeles', 'Home'];
var $search = $('#searchId');
var index = -1;

function foo() {

    if ($search.is(':focus')) {
        return;
    }
    index++;
    $search.val(words[index % words.length]);
}​

setInterval(foo, 3000);

Live DEMO

【讨论】:

  • 这个问题是,如果我添加一个 $search.val('');在返回清除搜索框之前,最多需要间隔时间才能生效。如果间隔是..说,5秒,那么这是一个问题
  • @glasspill。我不明白这是什么问题,请告诉我如何重现它。
  • 已修复。我在最后添加了这一行 $search.focus(function(){this.value=""});​ 以清除焦点上的值。谢谢。
【解决方案3】:

您将需要一些脚本来执行此操作,因此 jQuery 是一个不错的选择。简单的标记不会解决您的问题。相关:Changing the "placeholder" attribute of HTML5 input elements dynamically using Javascript

【讨论】:

  • 先生,不要误会我的意思,但是告诉那个人他需要编写代码,并且链接并不是一个完整的答案。
  • 我并没有试图真正解决他的问题,而是给他一个提示如何自己解决。显然,他对脚本一无所知,提供读取复制粘贴代码不会提高他在该领域的技能。鉴于这里的其他解决方案,他明天会再次提出这样的问题。
  • 可能是真的,但如果你不尝试解决他的问题,你应该使用评论。祝你好运先生!
猜你喜欢
  • 1970-01-01
  • 2019-01-25
  • 1970-01-01
  • 2021-03-12
  • 2021-12-05
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 2021-01-06
相关资源
最近更新 更多