2012-05-12 336 views
3

如何完成此操作。我正在尝试将文本追加到文本区域。如果某个值已经存在,则追加。我有它的工作,但似乎不能在所有浏览器中工作。有一个更好的方法吗?如果没有IfJavascript - 追加到文本区域值 - IE浏览器和火狐浏览器

if ($('#log').value == undefined) { 
$('#log').val("First: " + result[0]); 
} else { 
$('#log').val($('#log').value += "Second: " + result[0]); 
} 

if ($('#log').value == undefined) { 
$('#log').val("First: " + result[0]); 
} else { 
$('#log').val(log.value += "Second: " + result[0]); 
} 

,这部作品在Chrome,但不是在IE和FF - -

试图左右逢源,他们不会在Chrome,IE和FF工作

$('#log').val(log.value += "First: + result[0]); 
+1

undefined与空字符串不同,它是空文本区域的值。 – kennebec

+1

我不明白你为什么在自己的'.val()'中有'+ ='的元素。尝试使用'$('#log')。val($('#log')。val()+“Second:”+ result [0]);' –

+0

@kennebec - 如何检测空字符串/文本区域? –

回答

2

的jQuery对象没有.value属性,所以$('#log').value将始终为undefined。这意味着您的声明将始终呼叫$('#log').val("First: " + result[0]);,绝不会呼叫第二个。

您需要检查if($('#log').val() == '')

至于.val(),你可以传递一个函数。该函数将传递输入的当前值。

if ($('#log').val() == '') { 
    $('#log').val("First: " + result[0]); 
} else { 
    $('#log').val(function(i, v){ // v is the current value 
     return v + "Second: " + result[0]; // what's returned is what the value will be set to 
    }); 
} 
+0

谢谢!它如何确定'v'具有文本值? '我'是什么? –

+0

当你传递一个函数给'.val()'时,jQuery会调用它,并传递给它两个参数。第一个(我命名为'i')是元素的'index'(它的父元素中的位置),第二个元素(我命名为'v')是当前值。该函数的返回值是该元素的值将被设置为的值。 http://api.jquery.com/val/ –

+0

谢谢。所以jQuery被设计为传递这两个参数。 –

相关问题