2012-01-31 70 views
0

我有一個電子郵件文本框,其中包含文本'(不是必需的)',直到用戶點擊它,此時它變成空白。如果用戶在沒有輸入電子郵件地址(或輸入任何內容)的情況下單擊另一個文本框,我將嘗試將該文本框恢復爲包含(不需要)。單擊另一個文本框時清除文本輸入(如果爲空) - jQuery

這是我有:

$(document).ready(function() { 

    $('#email').val("(Not Required)"); 

    // this part works fine 
    $('#email').click(function(){ 
     if ($(this).val() == '(Not Required)'){ 
      $(this).val(''); 
     } 
    }); 

    // this isn't working 
    $(':text').click(function(){ 
     var em = $('#email').val().length(); 
     if (em<3){ 
      $('#email').val('(Not Required)'); 
     } 
    }); 

}); 

我想不通,爲什麼第二部分不能正常工作。任何幫助都會以一種非常大的方式從我自己身上得到一生的奉獻。永遠。

+2

您使用'纈氨酸()'在第一部分來獲取文本框的內容。嘗試在第二部分中使用它,而不是'text()'。 – 2012-01-31 02:09:43

+0

使用jquery水印插件而不是重新發明輪子。試試這個:http://digitalbush.com/projects/watermark-input-plugin/ – wargodz009 2012-01-31 02:11:44

+0

我切換到val()沒有成功=( – 2012-01-31 02:14:01

回答

1
var em = $('#email').text().length(); 

應該

var em = $('#email').val().length; 

而且我告訴你通過鏈方法做一個更好的辦法:

$(document).ready(function() { 

    $('#email').val("(Not Required)").foucs(function() { 
     $(this).val(''); 
    }).blur(function() { 
     if ($(this).val().length < 3){ 
      $(this).val('(Not Required)'); 
     } 
    }); 

}); 
+0

做到了!謝謝!!!!一旦我被允許,我會將其標記爲正確的。 – 2012-01-31 02:16:55

+0

爲什麼不'val()'? – gdoron 2012-01-31 02:19:15

+0

@gdoron這是一個錯字:)修復。 – xdazz 2012-01-31 02:20:41

1

你必須使用$('#email').val().length代替$('#email').text().length()

+0

這實際上是我之前嘗試將它切換到.text()。length()---我切換回.val()。length ()但它仍然不起作用 – 2012-01-31 02:12:47

+0

@Drake Ruppert還有一個屬性長度,而不是函數長度()。檢查xdazz的答案。 – Cheery 2012-01-31 02:15:26

+0

對,我剛剛糾正了這個錯誤。:) – 2012-01-31 02:19:21

1

變化

$('#email').text().length(); 

$('#email').val().length; 

而只是一個建議,爲什麼不使用電子郵件輸入的模糊()事件返回'不需要'的文本,而不是等待點擊另一個輸入框?

+0

+1模糊建議。 (注意,德雷克,重點會比點擊刪除「不要求」更好 - 總是允許鍵盤導航。) – nnnnnn 2012-01-31 02:28:25

0
  • click不應該捕獲該事件。 focus是一個去。不要忘記鍵盤導航。
  • 不要查詢DOM兩次,保存DOM元素並使用它。
  • 使用val()代替text和長度代替OD length()
  • :text不是一個好的選擇。這意味着全球選擇$('*')

$(document).ready(function() { 
    var $email = $('#email'); 
    $email.val("(Not Required)"); 

    // this part works fine 
    $email.focus(function(){ 
     if (this.value == '(Not Required)'){ 
      this.value =''; 
     } 
    }); 

    $('#otherTextBoxId').focus(function(){ 
     if ($email.val().length <3){ 
      $email.val('(Not Required)'); 
     } 
    }); 

}); 
+0

謝謝!這效果更好。我會upvote,但我無法這樣做 - 我剛剛註冊。 – 2012-01-31 02:25:44

+0

@DrakeRuppert。你應該接受最好的答案...... =) – gdoron 2012-01-31 02:26:17

+0

那麼爲什麼要查詢'$('#email')'三次並使用'$(this)'兩次? :) – xdazz 2012-01-31 02:28:14

相關問題