2012-05-12 148 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被設計爲傳遞這兩個參數。 –

相關問題