2012-05-30 135 views
-1

我希望有一个搜索框输入字段,在未聚焦时闪烁多个默认值。如在“纽约”中持续3秒,然后“洛杉矶”持续3秒等,或者模拟这些打字也会很好。输入字段的多个默认值

我所做的就是这个

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

但问题是,.VAL()获取每3秒覆盖,即使它的重点。

+1

为什么要这么做?这听起来像一个UI功能,可能会混淆你的用户。 –

+0

@RoryMcCrossan。该死的,我喜欢比赛太多,我为他做了...... :( – gdoron

+0

@gdoron我知道这种感觉,你看到一个非常糟糕的问题,但你不得不寻找一个解决方案:D –

回答

3

方式一:

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

+0

这个问题是,如果我添加一个$ search.val('');返回之前清除搜索框,它最多需要输入间隔时间才能生效。如果时间间隔是5秒,那么这是个问题 – glasspill

+0

@glasspill。我不明白是什么问题,告诉我如何重现它。 – gdoron

+0

已修复。我添加了这一行$ search.focus(function(){this.value =“”});最后清除焦点值。谢谢。 – glasspill

1

你将需要一些脚本来做到这一点,所以jQuery是一个好方法。简单的标记不会解决您的问题。相关阅读:那我想出了Changing the "placeholder" attribute of HTML5 input elements dynamically using Javascript

+0

先生,不要误解我的意思,但告诉那个人他需要编写代码,并且链接不是一个明确的答案。 – gdoron

+0

我没有试图真正解决他的问题,而是给他一个显然他对脚本没有任何线索,并且提供“读取 - 复制 - 粘贴”代码并不会提高他在这个领域的技能,在这里给出其他解决方案,他会再次提出这样的问题明天 – Michael

+0

大概是真的,但是如果你不试图解决他的问题,你应该使用注释。祝你好运先生! – gdoron

2

你可以像下面这样做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="" 
}); 
​ 
​ 
+0

几件事情。 ** 1。**您可以使用模块运算符('%')。 ** 2。**你不检查焦点。 ** 3。**您不需要在每个时间间隔查询元素,将其缓存。 – gdoron

+0

谢谢@gdoron,我纠正了焦点不足 – Adil