實現輸入框只能鍵入數字

2021-08-14 11:39:00 字數 1016 閱讀 2464

在很多業務中需要對輸入框進行字元限制,比如金額輸入框、手機號碼輸入框等。

以下是三種嘗試過的解決方案,最後乙個自覺最優,如有更優解決方案,望指教。沒多少經驗的菜鳥們快來圍觀:

1 次方案

"this.value=this.value.replace(/\d/g,'')" onafterpaste="this.value=this.value.replace(/\d/g,'')">
但這會出現乙個問題:游標定位到某個字元並刪除後,輸入框的值被重新賦值,游標也跟著去到了字串末尾。這是個很不好的體驗。

2 次方案

這樣的結果讓我第乙個想到的解決辦法就是,在鍵入之前就遮蔽掉非數字,即在keydown(按下,但並沒有對輸入框賦值)事件中,判斷輸入的key,如果不是數字則不給輸入框賦值:

$("input").keydown(function

(e) //alert(e.keycode);

//非數字鍵值 相容iphone6s低版本的機型

if ((e.keycode >= 48 && e.keycode <= 57) == false && e.keycode != 8)

}

ok,正如**裡所看到的,多了一段相容**。由於iphone6s某版本及以下版本 獲取到的key為undefined,所以只能通過keycode判斷。而問題又來了,在手機上的鍵盤,「*」和「8」的keycode編號是一樣的,無法區分,存在小缺陷。

有人針對這個小缺陷提出的彌補方案是:在失去焦點的時候再去掉,t_t,那還不如都在失去焦點的時候處理。。。

3 最佳方案

所以我不甘心,繼續嘗試,終於找到了乙個完美的解決方案:

那就是在鍵入後糾正並定位到鍵入前游標的位置,實質地解決了最初問題,請看**。

$("input").keyup(function

()});

輸入框只能輸入數字

正規表示式限制輸入框只能輸入數字 如下 其中,onafterpaste防止使用者從其它地方copy內容貼上到輸入框 輸入框只能輸入字母和下橫線的正規表示式 輸入框只能輸入字母數字和下橫線的正規表示式 或 as3 文字過濾 過濾文字輸入 textfield.restrict 此處為可輸入的內容 fie...

輸入框中只能輸入數字

syetem.windows.froms 為 keydown keyup 的事件提供資料的類是 keyeventargs 而為 keypress 事件提供資料的類是 keypresseventargs keypress主要用來捕獲數字 注意 包括shift 數字的符號 字母 注意 包括大小寫 小鍵盤...

input輸入框只能輸入數字,只能輸入字母數字組合

輸入大小寫字母 數字 下劃線 1 g,輸入小寫字母 數字 下劃線 2 g,輸入數字和點 3 g,輸入中文 4 g,輸入數字 輸入英文 5 g,輸入中文 數字 英文 6 g,輸入數字和字母 除了英文的標點符號以外,其他的都可以中文,英文本母,數字,中文標點 7 g,只能輸入數字 小數點也不能輸入 只能...