2011-04-11 54 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属性。