如何使用jQuery将文本附加到文本框值?

7
我需要在不替换现有文本的情况下,将“-”添加到当前文本框值中。 我尝试使用以下代码。
if(len.length==4){
     $("-").appendTo("#date").val();
}

但是它失败了。

它是一个类型为文本的输入字段还是其他包含文本的元素。在HTML中并不存在所谓的文本框,根据您下面的评论,似乎它不是一个输入字段。 - Rune FS
这是一个输入类型为文本的字段。我需要在前四个字符后添加“-”。 - Mangala Edirisinghe
6个回答

16

虽然您已经得到了几个(但不是全部)正确的答案,我想展示另一种解决方法:

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

.val( function(index, value) )

这个函数返回设置的值。this是当前元素。作为参数接收集合中元素的索引位置和旧值。

来源

如果你不想使用 function 来实现,可以使用以下方式:

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

5
你需要检索当前的数值,并将其添加到其中。
var $date = $('#date');
$date.val($date.val() + '-');

2

尝试:

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

2
我发现最优雅的方法是不要过多使用jQuery。
if ( len.length === 4 ) {
    var date = $( '#date' )[0] // faster to write than "document.getElementById( 'date' )"
    date.value += '-'
}

Fiddle: http://jsfiddle.net/Ralt/T9mUT/3/


你没有将函数上下文传递给.val(),因此this引用可能与您想象的不同。它肯定不会是您刚刚选择的$('#date') - Richard Neil Ilagan
这是你在 jsFiddle 上的代码,但它没有运行。 - Teneff
好的,只有 this.value 能够正常工作。@RichardNeilIlagan 是正确的,this 不正确。http://jsfiddle.net/Ralt/T9mUT/1/ - Florian Margaine
成功运行了,而且不使用this,使用原生的JavaScript更加优雅。 - Florian Margaine
那仍然不会起作用。this指的是函数的上下文,由于您没有将函数传递给.val(),因此this将是(1)未定义或(2)当前运行此代码的函数上下文。它不会是您链接.val()方法的$('#date') - Richard Neil Ilagan
显示剩余2条评论

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

2
你为什么要查询两次DOM? - gdoron
我同意这是不必要的,但只是想展示非常基本的语法。 - Warren Sergent

0

我刚刚在做这个。我在这里使用了 .append(myValue);,现在我正在循环遍历一个 Ajax 结果集:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接