2012-04-24 91 views
5

我需要追加 - 当前文本框的值,而不会替换现有文本。我试着用这个代码。如何使用jQuery将文本追加到文本框的值?

if(len.length==4){ 
    $("-").appendTo("#date").val(); 
} 

但它失败了。

+0

它是一个输入字段,带有文本类型或其他元素,并带有文本。 HTML中没有这样的文本框,并且下面的注释看起来不是输入字段 – 2012-04-24 06:56:40

+0

它是一个带有文本类型的输入字段。我需要添加 - 在第一个四个字符后。 – 2012-04-24 07:05:47

回答

13

虽然你有几个(但不是全部)正确答案,我想展现另一种方式来做到这一点:

$('#date').val(function(index, value) { 
    return value + '-'; 
});​ 

.val(function(index, value))

function(in dex,value)返回要设置的值的函数。这是当前的元素。接收集合中元素的索引位置和旧值作为参数。

source

如果你不想使用function做它,使用:

var $date = $('#date'); 
$date.val($date.val() + '-'); 
+0

thanx博士。这是工作。和很好的解释。 – 2012-04-24 07:50:54

1

尝试:

$('#date').val($('#date').val() + '-'); 
+0

它取代了现在的文字。 – 2012-04-24 06:53:18

+0

[THIS](http://jsfiddle.net/teneff/T9mUT/)编辑后不工作 – Teneff 2012-04-24 07:02:34

+0

,它的工作。谢谢。 – 2012-04-24 07:07:23

5

你要获取当前值,并追加到

var $date = $('#date'); 
$date.val($date.val() + '-'); 
+0

谢谢博士。它正在工作 – 2012-04-24 07:15:00

+0

+ 1用于缓存DOM元素。 – gdoron 2012-04-24 07:55:51

1

我找到的最优雅的方式包括不使用jQuery这么多。

if (len.length === 4) { 
    var date = $('#date')[0] // faster to write than "document.getElementById('date')" 
    date.value += '-' 
} 

小提琴:http://jsfiddle.net/Ralt/T9mUT/3/

+0

您没有将函数上下文传递到'.val()'中,所以'this'引用可能与您想象的不同。这肯定不会是你刚刚选择的$('#date')。 – 2012-04-24 07:00:41

+0

[这是](http://jsfiddle.net/teneff/T9mUT/)是你在jsFiddle中的代码,它不工作 – Teneff 2012-04-24 07:01:44

+0

好吧,只有'this.value'工作..不知何故。 @RichardNeilIlagan说'这个'不正确。 http://jsfiddle.net/Ralt/T9mUT/1/ – 2012-04-24 07:02:35

2
jQuery('#date').val(jQuery('#date').val() + '-'); 
+2

为什么你查询DOM两次? – gdoron 2012-04-24 07:00:34

+0

我同意这是不必要的,但只是试图显示非常基本的语法。 – 2012-04-24 07:06:25

0

我只是在做这个。我用.append(myValue);这里我通过一个Ajax结果集循环:

 $.each(result, function (i, obj) { 
      $.each(obj, function (i, item) { 
       $('#txtValueList').append(item); 
      }) 
     }) 
相关问题