2011-04-11 51 views
0

我有這樣的jQuery:這個jQuery .blur有什麼問題?

var testTitleVal = $('#testTitle').val(); 
$('#testTitle').blur( 
     function(){ 
      if(testTitleVal.length == 0){ 
       $('#testTitle').val('Title'); 
      } 
     }); 

對這個HTML工作:

<input type="text" id="testTitle"> 

我希望做到的是,當焦點離開該input並沒有輸入任何文字它使值爲Title。出於某種原因,它並沒有這樣做。有任何想法嗎?

+1

'testTitleVal'的值是什麼?據我所知,沒有一個。 – 2011-04-11 22:02:09

回答

2

你的代碼是有點過if語句:

做到這一點,而不是:

$('#testTitle').blur( 
    function(){ 
     if($(this).val().length == 0){ 
      $(this).val('Title'); 
     } 
    }); 

小提琴:http://jsfiddle.net/maniator/C6aau/

+0

多數民衆贊成在奇怪的,它現在的作品,但我確實有上面定義的變量:'var testTitleVal = $('#testTitle')。val();' – chromedude 2011-04-11 22:04:15

+0

我更新了我的帖子以貫穿始終使用'this',我不確定。我沒有看到其他代碼^ _^ – Neal 2011-04-11 22:05:00

+1

@chromedude你的'testTitleVal'在模糊發生之前被調用。你需要使用一些閉包,並在模糊中使用'this'來獲得真實值 – Neal 2011-04-11 22:10:49

0

你定義變量testTitleVal別的地方?

嘗試更換該行以

if ($(this).val().length === 0) { 
+1

'$(this).val()'將始終返回true。 – Neal 2011-04-11 22:03:07

+0

@Neal;我更新了我的答案,我不知道。謝謝! – goggin13 2011-04-11 22:05:46

0

我不知道什麼是testTitleVal,但我認爲你正在尋找的東西是這樣的:

$('#testTitle').blur(
    function() { 
     if (this.value.length === 0) { 
      this.value = 'Title'; 
     } 
    } 
); 

你也可能想看看在HTML5 placeholder屬性。