2013-04-22 42 views
13

按鈕上的文字我到目前爲止這方面的工作代碼:如何更改JQuery的

小提琴:http://jsfiddle.net/r4emt/12/

現在你進入JQuery用戶界面自動完成之前,該按鈕上寫着「你好」。您可以在JQuery UI自動填充中鍵入「item」,您會注意到該按鈕現在顯示爲「World」。點擊「世界」按鈕將項目放入列表中。如果您再次輸入項目,則可以選擇一個,然後單擊列表中已有項目上的替換按鈕。然而,一旦你這樣做,按鈕仍然說「世界」,但它應該說「你好」,因爲輸入字段中沒有任何東西。如果您點擊輸入字段,然後點擊刪除或後退箭頭,它會變回「hello」,但是沒有任何內容可以刪除或移到左側。我認爲它與這部分代碼有關:

$('#inputWrapper').on('keyup', '#tags', function() { 
    if($(this).val() == '') { 
     $('button.addButton').text('Hello'); 
    } else { 
     $('button.addButton').text('World'); 
    } 
}); 

特別是'keyup'部分。所以我的問題是我怎樣才能解決這個問題,以便每當輸入框爲空時,按鈕總是顯示「hello」,當字段中有輸入時,按鈕顯示「world」?謝謝!

+1

我建議你使用'textchanged'事件,而不是單純依靠keyup,因爲即使有人將文本粘貼或拖放到輸入中,它也可以工作:http://www.zurb.com/playground/jquery-text-change-custom-event – techfoobar 2013-04-22 19:22:16

+0

哇,謝謝你的建議!看起來這正是我需要的。我該如何安裝該插件?並且它包括

1

難道你不只是設置文本回你好後,他們點擊它?添加到您的按鈕,點擊功能的底部:

$(this).text('Hello'); 

http://jsfiddle.net/r4emt/13/

+0

我很感激幫助,但這並沒有解決問題。如果你更換,按鈕仍然說「世界」。 – sbru 2013-04-22 19:33:41

+0

我在小提琴中看不到您的可排序列表。我看到的只是一個文本框和一個按鈕。 – 2013-04-22 19:38:41

+0

該按鈕將項目添加到可排序列表中... – sbru 2013-04-22 19:41:46

0

把狀態這樣

if($.trim($(this).val()) == '')

刪除不需要的空間。此外,你應該在單擊事件的處理程序按鈕上的文字更改爲「Hello」

在點擊函數的末尾添加這樣的: $(this).text('Hello');

下面的代碼: http://jsfiddle.net/r4emt/34/

+0

我很感激幫助,但是這並沒有解決問題。如果你更換,按鈕仍然說「世界」。 – sbru 2013-04-22 19:33:12

+0

你有一個按鈕被點擊時運行的函數嗎? – armandocj 2013-04-22 19:36:08

+0

是的,在js文件中的最後一個函數。 – sbru 2013-04-22 19:38:21

1

jsFiddle Working Demo

$('#inputWrapper').on('keyup', '#tags', function() { 
     if($(this).val() == "") { 
      $('button.addButton').html('Hello1'); 
     } else { 
      $('button.addButton').html('World'); 
     } 
    }); 
+0

我已經更新了jsFiddle鏈接..再見 – 2013-04-22 19:30:24

+0

我很感激幫助,但是這並沒有解決問題。如果你更換,按鈕仍然說「世界」。 – sbru 2013-04-22 19:31:43

+0

爲我工作。 +10☺ – Pathros 2015-08-13 19:24:38

0

此功能僅在第一時間,因爲在執行後,事件監聽器總是要KEYUP後進行評估導致輸入框始終有一個值。你會注意到,一旦你點擊按鈕,如果你鍵入東西,並刪除它按退格鍵,它會改回到你好。

爲了達到預期的效果,當您在按鈕上單擊「提交」時,因爲您正在輸入框中清除 ,您還可以在那裏更改文本。

參見:http://jsfiddle.net/r4emt/37/

我只是說:

//refreshes button name 
$(this).text('Hello'); 

到按鈕點擊功能的結束。

0

使用「文本」功能

 $("#inputWrapper").click(function() { 
     $(this).text(function(i, v){ 
      return v === 'Hello' ? 'World' : 'Hello' 
     }) 
8

我知道這是一個漫長的死線,但我還需要增加這一點,因爲我剛剛了2天跟蹤使用內存泄漏(由我引起的代碼從這個頁面)。

重要提示:請勿在按鈕元素上使用jQuerys文本()!

該函數在DOM中創建的東西不能被empty()刪除。如果你在很長一段時間內多次調用這個函數,那麼你的DOM中會有大量垃圾進入,導致東西被破壞。

jQuery API documentation.

(無法找到確切位置,其文檔中提到,但它在那裏的地方,我得爲我的火車立即執行)...

+3

聽起來不太可靠,說實話。這裏描述了一個潛在的泄漏(http://stackoverflow.com/a/16405533/33080),但是沒有任何解釋的「不使用text()」這樣的聲明太不明確了。 – 2016-02-02 21:47:01