2014-05-08 222 views
1

我正在嘗試執行下面的代碼,但至今沒有成功。使用Jquery驗證輸入

function isNumberKey(evt) { 
    var charCode = (evt.which) ? evt.which : event.keyCode 
    if (charCode > 31 && (charCode < 48 || charCode > 57)) return false; 
    return true; 
} // restrict numerical values only 

以上僅該代碼允許數字字符,並且當用戶從數值那些推任何其他鍵分開,它不會出現在文本框中。

這正是我想要的,但情況不同,我不希望用戶輸入零(0)作爲他們的第一個字符。

例如0909錯了,而是909

我已經能夠做到這一點迄今

$(".input-xlarge").keyup(function() { 
    var textInField = this.value; 

    if (textInField.length == 1) { 
     if (textInField == 0) { 
      showError('error?'); 
     } 
    } 
}); 

而是應該要有一個消息顯示給用戶,輸入應該就像第一個代碼忽略。

回答

3

看,這「塊」爲通過JS唯一有效的輸入文本框。

HTML:

<input id='numeric' type='text'/> 

JS:

$('#numeric').keydown(function(e){ 
    if(e.keyCode == 8) // allow backspace - add more chars here 
    { 
     return; 
    } 
    else if(e.keyCode < 48 || e.keyCode > 57 || (e.keyCode == 48 && $(this).val() == '')) // non numeric + beginning zero 
    { 
     e.preventDefault(); 
    } 
}); 

Fiddle

+0

爲什麼它不適用於鍵控? – BlackPearl

+1

當用戶按下按鍵時,會觸發KeyDown事件。 當用戶釋放密鑰時,會觸發KeyUp事件。 –

+0

非常感謝 – BlackPearl

1

這會工作,

$(".input-xlarge").keyup(function (evt) { 
    var textInField = this.value; 
    if (textInField.length == 1) { 
     if (textInField == 0) { 
      alert('number should not start with zero'); 
      $(evt.target).val("") 
     } 
    } 
}); 
+0

要提高你的答案,你可以解釋爲什麼這會工作。 – iConnor

+0

這可以工作,但零(0)出現在自動刪除之前。我需要它不要出現在文本框中。 – BlackPearl

+0

然後只是刪除警報,一旦鑰匙啓動就會刪除零位 –

1

試試這個代碼:

$(".input-xlarge").keyup(function (event) { 
    var textInField = this.value; 

    if (textInField.substr(0, 1) == '0') { 
     event.preventDefault(); 
     alert("should not start with zero'); 
    } 
}); 

這樣,每當作爲第一個字母你的用戶輸入0,那麼就不會被顯示,並會提醒一條錯誤消息。

+0

不,零(0)仍然顯示並且不會被刪除 – BlackPearl

+0

啊,不要使用keyup,而是使用keydown ..因爲在keyup事件中你的角色已經輸入到現場.. –

1
$(".input-xlarge").keyup(function(e) { 
    var textInField = this.value; 
    if (textInField.length == 1){ 
    if (this.value.length == 0 && e.which == 48){ 
     alert('cannot start with zero') 
     return false; 
    } 
    } 
}); 

在小提琴指這jsfiddle

+0

你的小提琴工作,但不是這個 – BlackPearl