2012-03-05 79 views
1

我有一個text box,我對text box輸入數據,我想要做的是:如果我將進入4 charactersskip that text box by pressing TAB key然後一個警報會爲"data should be more than 4 characters",然後文本框將是auto refreshed。如果輸入的數據超過4個字符,則不會發出警報,但我正在嘗試onkeyup事件,但有些地方我做錯了。任何幫助請警報和自動刷新文本框,如果長度爲4

+0

「自動刷新」是什麼意思? – ajax333221 2012-03-05 05:12:52

+0

你能顯示你的代碼嗎? – 2012-03-05 05:13:02

+0

@ ajax333221自動刷新意味着文本框將再次爲空,用戶必須再次輸入數據到該文本框中。如果輸入的數據超過4個字符,則一切正常,但如果輸入的數據是4或小於4,則警報將出現以及文本框將變爲空 – Tom 2012-03-05 05:15:41

回答

2

我不知道你的意思是「那麼文本框會自動刷新」,所以我會猜測你想把光標放回該字段。至於Tab鍵出來的時候檢查值的長度你想要的.change().blur()事件:

$("input[type=text]").change(function() { 
    if (this.value.length <= 4) { 
     alert("Please enter more than 4 characters."); 
     this.focus(); 
     return false; 
    } 
}); 

演示:http://jsfiddle.net/XHKRh/

模糊事件將每隔焦點離開現場時觸發;如果用戶立即再次跳出該字段而不更改它,則不會再次觸發更改事件。我更喜歡在表單提交時使用更改和額外的驗證,以便用戶不會收到警報(儘管實際上我不會顯示任何提醒,我會將該消息放在下一頁上到現場)。

+0

謝謝你的回答,但是我發現在警報之後,我仍然可以繼續閱讀下一個文本框,警報即將到來,但是警報重點應該保留在該文本框中移動到下一個文本框,我認爲你的小提琴需要輕微的編輯 – Tom 2012-03-05 05:19:46

+0

看到我更新的答案。使用'.blur()'而不是'.change()'會做你想做的事情,但是(正如我在更新中所說的)我更喜歡另一種方法。 – nnnnnn 2012-03-05 05:22:47

+0

好的,讓我試試這個 – Tom 2012-03-05 05:23:00

1

如何在blur

var el = $('#textbox').blur(function(e) { 
    if (el.val().length > 4) { 
     return; 
    } 

    el.focus(); 
    alert('data should be more than 4 characters'); 
}); 

請注意,這種技術會導致糟糕的用戶體驗。顯示與您的元素內聯的消息將優於阻止用戶與其他任何事物交互。

+0

非常感謝Eli的回覆,請讓我試試你的代碼 – Tom 2012-03-05 05:23:45

0

有一些可能導致你有意思的觀點:

  • 你不應該只依賴於JavaScript來驗證形式,用戶可以把它關閉 並繞過驗證
  • 有一種maxlength屬性輸入
  • 您可能正在尋找onblur而不是讓TAB鍵的作用,因爲用戶 可以通過其他方式更改焦點
+0

是的,你是對的,我不應該只依靠javascript,那麼我該如何解決這個JavaScript關閉問題? – Tom 2012-03-05 05:25:12

+0

@你可以用服務器端語言進行驗證,(我最喜歡的是PHP,但還有很多其他的)。但是,在生死攸關的情況下,您應該使用這種額外的措施,在這種情況下,注入物質會對您造成很大的問題 – ajax333221 2012-03-05 05:30:25

+0

「生命或死亡時」?您應該在您的服務器端代碼中進行_always_驗證。 – nnnnnn 2012-03-05 05:34:59