精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何讓HTML5數字輸入僅接受整數?

開發 后端
使用 HTML 5 屬性來限制可以發送到服務器的內容,然后使用 Javascript 增強它,以限制用戶可以在第一個地方輸入的內容。

[[385049]]

原文:https://levelup.gitconnected.com/making-html-5-numeric-inputs-only-accept-integers-d3d117973d56

作者:Jason Knight

這兩年我看到很多關于這方面的文章和帖子,這的確是一個非常方便的東西。但是,太多的實現還是有漏洞,殘缺不全的實現,等等。

整體概念是合理的:使用 HTML 5 屬性來限制可以發送到服務器的內容,然后使用 Javascript 增強它,以限制用戶可以在第一個地方輸入的內容。

所以讓我們來看看這些問題,并更好地實現它。

問題 1,不好的腳本

最常見的缺陷是缺乏適當的降級功能。如果您要在“electron”或“nw.js”中構建完整的堆棧應用程序,那很好,但是這種形式的東西通常在面向公眾的網站中沒有位置。

就像我經常說的那樣,高質量的腳本應該增強已經在工作的頁面,而不是用戶使用它的唯一方法。

解決辦法?

使用 pattern 和 step 屬性來限制有效內容。

問題 2,正則表達式模式錯誤或不完整

人們最常用的模式是 [-/ d] *,它的問題是允許在任何地方都減號。雖然肯定可以使用 type = “number” 來解決問題,但這不是一個好選擇。截取按鍵時更是如此,因為減號只能是第一個字符。

它還可能出現問題,因為某些實現“不是”正則表達式,這會導致誤報。

解決辦法?

對于 HTML,使用更好的表達式:^[- d]\d*$ 更加健壯和準確。減號可以是匹配開始的第一個字符,然后是零個或多個小數,直到字符串結束。

對于 JavaScript,只使用正則表達式來測試數字,并應用一些更實用的邏輯來檢測其他值。

簡單易行!

問題 3,在標記中使用事件屬性

我知道在 JSX 垃圾中,有大量的用嘴呼吸的人在鼓勵這一點,但如果你在寫 vanilla 或其他系統,請出于對圣誕節的愛,從 1997 年的直腸中取出你的頭顱。

將 “onkeypress” 或 “onchange” 放在標記中意味著錯失了一次緩存機會,也違反了分離關注的原則。以這種方式將 JavaScript 放進標記中,就像在 HTML 4 Strict 中被廢棄的所有東西一樣,愚蠢得令人發指。就像如果你要用 “text-white box-shadow col-4-s” 這樣的屬性在你的 HTML 上撒尿一樣,請你承認失敗,然后回到寫 HTML 3.2 的時候,用所有那些 FONT / CENTER 標簽、COLOR、BGCOLOR、SIZE、BORDER 和 ALIGN 屬性,以及 "用于布局的表格 "來寫,你們似乎都很清楚地、很珍視地錯過了。

這也意味著您沒有完整/適當的事件處理程序訪問權限。

解決辦法?

Element.addEventListener,請使用它!

問題 4,必須對每個輸入進行硬編碼

無論是通過問題 3 將事件屬性放到標記中,還是通過手動獲取唯一 ID 來捕獲它們,我幾乎沒有發現可以實際使用即插即用的標記應用程序的代碼庫!

解決辦法?

document.querySelectorAll('input[type="number”][step="1"]') 給我們提供所有我們想要的整數輸入,所以我們可以增強它。

問題 5,一些腳本阻止使用導航控制和正常編輯!

通過攔截并只允許減號和 0...9,它們可以防止退格鍵、回車鍵、制表鍵、箭頭、刪除、插入等等等等。并不是所有的瀏覽器都會把這些作為 event.key 發送,這要看你鉤住的是什么事件。比如 “keypress” 事件在 Firefox 和 Chrome 中會過濾掉一些,以免破壞正常的表單使用,但 “老 Edge” 和 Safari 不會,“keydown” 則什么也不過濾。

解決辦法?

因為 “keypress” 事件跨瀏覽器不一致,所以用 keydown 代替。那么我們就可以利用所有控制鍵在 Event.key 值中返回多個字符的事實,我們只需要檢查 Event.key.length>1 就可以說 “繼續允許這些”。

正如前面所提到的,我們所需要的只是一個簡單的輸入,在不使用 JavaScript 的情況下,它首先具有盡可能多的功能!

HTML:

  1. <input type="number" step="1" pattern="^[-/d]/d*$" /> 

只接受整數,如果你想只接受正數,可以換成 pattern="/d+”

JavaScript:

然后我們可以使用 JavaScript 來限制用戶的輸入,這樣人們甚至不允許輸入無效值。

  1. (function() { 
  2.   var integers = document.querySelectorAll( 
  3.       'input[type="number"][step="1"]' 
  4.     ), 
  5.     intRx = /\d/; 
  6.  
  7.   for (var input of integers) { 
  8.     input.addEventListener("keydown", integerChange, false); 
  9.   } 
  10.  
  11.   function integerChange(event) { 
  12.     if ( 
  13.       event.key.length > 1 || 
  14.       (event.key === "-" && 
  15.         event.currentTarget.value.length === 0) || 
  16.       intRx.test(event.key
  17.     ) 
  18.       return
  19.     event.preventDefault(); 
  20.   } 
  21. })(); 

我們首先將其包裝在 IIFE 中以隔離范圍。然后,抓取我們要在頁面上掛接的所有輸入,并創建我們的正則表達式。

我在事件開始處而不是在事件內部創建正則表達式,這樣我們就不用浪費時間在每個該死的按鍵上創建它。這就是匿名函數可能帶來開銷的地方,也是需要告訴那些“函數式程序員”和他們的“副作用”廢話的地方。

循環遍歷所有輸入,并為它們分配事件處理程序。

上述處理程序只是檢查我們的返回情況。像箭頭、退格鍵、回車鍵等控制鍵都會返回完整的文字來描述它們,所以如果 event.key 的長度>1,我們就不要阻止這些。

如果它是一個負號和第一個字符,通過 return 允許它。

如果它是一個數字,通過 return 允許它。

如果都不是,請阻止該事件。

Live Demo

這是一個代碼本,它包括幾個文本字段和多個整數和非整數的數字字段,所以你可以看到它確實只鉤住了我們想要的字段。

https://codepen.io/jason-knight/pen/QWGyrwq

懸而未決的問題

我可能會考慮添加的一件事是掛鉤“change”事件來攔截粘貼,但由于“pattern”屬性不允許提交無效的值,所以應該沒有問題。

結論

多想想用戶可能會輸入錯誤的東西,以及如何處理,但也要記住用戶可能輸入的所有其他東西,而這些東西與值本身沒有關系。

請始終注意,許多用戶會主動阻止腳本編寫,或者出于安全或可訪問性的原因讓腳本在 UA 中不可用。增強而不是取代你的基本功能!

計劃將這些東西應用到所有這些字段,而不是從一開始就只使用單個元素。

留意低效率,例如如何多次生成用作回調的匿名函數……或如何將腳本放入標記中會錯失跨頁面或重新訪問的緩存機會。

做了這些事情之后,實現這樣簡單的功能就不會再來困擾您或惹惱用戶了。

本文轉載自微信公眾號「前端全棧開發者」,可以通過以下二維碼關注。轉載本文請聯系前端全棧開發者公眾號。

 

責任編輯:武曉燕 來源: 前端全棧開發者
相關推薦

2021-03-13 09:35:40

HTML 5Javascript腳本

2017-10-12 15:58:10

網站HTML5Manifest

2015-11-19 09:44:34

HTML5定位

2011-10-09 13:29:11

HTML5App Store蘋果

2009-05-08 13:46:38

JavaScriptHTML5離線存儲

2011-12-31 10:12:10

2015-06-10 10:18:27

WebAPP開發技巧

2013-01-24 10:26:04

HTML5HTML 5HTML5的未來

2011-05-13 17:36:05

HTML

2013-10-21 15:24:49

html5游戲

2011-12-28 15:32:46

HTML5移動App

2016-01-13 10:09:18

原生應用HTML5

2017-01-03 18:09:33

HTML5本地存儲Web

2011-05-12 15:42:16

HTML5

2011-01-14 17:53:33

HTML5cssweb

2023-03-16 09:00:00

HTML5HTML語言

2011-05-13 17:41:40

2018-05-30 08:54:00

離線存儲HTML5

2015-08-14 10:44:33

HTML5

2013-03-22 08:59:57

HTML5移動應用Web App
點贊
收藏

51CTO技術棧公眾號

日韩黄色一级大片| youjizz.com日本| 欧美日韩xx| 野花国产精品入口| 91麻豆精品国产91久久久 | 久久婷婷五月综合色国产香蕉| 亚洲字幕av一区二区三区四区| 要久久电视剧全集免费| 亚洲一区在线看| 欧美一区二区三区四区在线观看地址| 91国内精品视频| 欧美激情偷拍自拍| 亚洲国内精品视频| 午夜宅男在线视频| 国产夫妻在线| 99久久精品国产网站| 国产精品久久久久久久久影视| 欧美色图一区二区| japanese国产精品| 欧美色综合久久| 亚洲电影一二三区| 中文字幕人妻丝袜乱一区三区| 91精品啪在线观看国产18| 亚洲精品国产电影| 男生和女生一起差差差视频| 欧美成人精品一区二区男人小说| 久久日韩粉嫩一区二区三区| 91麻豆国产精品| 久久久久久久久99| 国产乱人伦精品一区| 欧美日韩久久一区| 精品91一区二区三区| 欧美91精品久久久久国产性生爱| 久久国产精品99国产| 欧美成人在线免费视频| 日本wwwwwww| 黄视频网站在线观看| 亚洲少妇30p| 国产一区二区精品在线| 亚洲熟妇无码乱子av电影| 欧美另类亚洲| 亚洲欧美精品一区二区| 我要看一级黄色大片| 黄色网页在线看| eeuss影院一区二区三区| 亚洲xxx大片| 国产成人精品白浆久久69| 美女精品一区二区| 久久久亚洲网站| 性欧美精品男男| 真实原创一区二区影院| 日韩精品免费观看| 国产精品无码毛片| 西野翔中文久久精品字幕| 精品国一区二区三区| 韩国一区二区三区四区| 成人短视频app| 亚洲日本在线天堂| 一二三四中文字幕| 男人的天堂在线| 久久久精品一品道一区| 欧美一二三区| 国产黄色大片网站| 久久中文精品| 97在线视频免费看| 91高清免费看| 国产麻豆一区二区三区精品视频| 日韩精品在线视频观看| 91香蕉视频免费看| 成人美女视频| 91久久奴性调教| 国产精品久久a| 国产不卡精品| 精品国产一区久久| 国产真实乱人偷精品| 性欧美xxxx免费岛国不卡电影| 亚洲男人第一av网站| 极品人妻videosss人妻| 亚洲精品一区二区妖精| 亚洲欧美国产视频| 一级在线观看视频| 亚洲美女久久| 亚洲成人在线视频播放| 午夜激情视频网| 91免费精品国偷自产在线在线| 欧美日韩精品一区二区天天拍小说| 欧美深夜福利视频| 欧美xx视频| 日韩欧美在线视频观看| 拔插拔插海外华人免费| www.久久ai| 香蕉av福利精品导航| 欧美精品一区二区三区免费播放| 精品国产黄a∨片高清在线| 91精品国产91综合久久蜜臀| 国产黑丝在线观看| 日本一区二区三区视频| 亚洲人成77777在线观看网| 三级视频网站在线观看| 国产永久精品大片wwwapp| 亚洲国产另类久久精品| 自拍偷拍你懂的| 国产一区二区观看| 久久777国产线看观看精品| 日日夜夜综合网| 亚洲永久在线| 91亚洲va在线va天堂va国| 91中文字幕在线播放| 成人午夜私人影院| 亚洲国产成人不卡| av手机免费在线观看| 欧美挠脚心视频网站| 中文字幕在线观看的网站| 亚洲大片精品免费| 亚洲欧洲第一视频| 丁香激情五月少妇| 91久久亚洲| 成人久久久久久| av在线资源观看| 国产 日韩 欧美大片| 国产福利久久| 亚洲欧美日韩动漫| 一区二区三区免费| 热99这里只有精品| 成人免费看视频网站| 欧美在线视频全部完| 无码国产69精品久久久久网站| 欧美日韩另类图片| 国产一区二区免费| 欧美不卡视频在线观看| 国产精品一二二区| 日本女人高潮视频| 日本.亚洲电影| 国产亚洲精品美女| 日产精品久久久| av不卡免费电影| 国产中文字幕乱人伦在线观看| av影院在线| 精品国产乱码久久久久久久| 国产福利视频网站| 国内精品久久久久国产盗摄免费观看完整版| 欧美肥婆姓交大片| 国产女人高潮的av毛片| 国产精品久久久久久久久免费相片| 热久久最新地址| 经典三级久久| 亚洲欧美另类国产| 黄色片免费观看视频| 久久精品国产免费看久久精品| 日本欧美色综合网站免费| 久草在线资源福利站| 亚洲精品wwwww| 青青操在线视频观看| 蜜臀va亚洲va欧美va天堂 | 日本免费一区视频| 国产精品国产自产拍高清av| 向日葵污视频在线观看| 99亚洲乱人伦aⅴ精品| 色综合久久88| 欧美一区二不卡视频| 亚洲成人手机在线| 日韩免费毛片| 国产盗摄在线视频网站| 欧美午夜一区二区三区免费大片| 久久久久久久久久影视| 郴州新闻综合频道在线直播| 欧美激情视频网站| 色欲av永久无码精品无码蜜桃 | 成人性生交大合| 久久国产亚洲精品无码| 亚洲最大的免费视频网站| 久久香蕉国产线看观看网| 国产字幕在线观看| 成人丝袜18视频在线观看| 精品国产一区三区| 欧美日韩伦理在线免费| 欧美极品少妇xxxxⅹ免费视频 | 中文字幕成人精品久久不卡 | 日本午夜精品一区二区三区电影| 国产偷久久久精品专区| 伊人色综合一区二区三区影院视频| 亚洲人成电影在线观看天堂色| 免费看av在线| 亚洲激情欧美激情| 性欧美丰满熟妇xxxx性仙踪林| 日本欧美一区二区三区乱码| 日韩中文在线字幕| 亚洲精品777| 午夜精品理论片| av中文字幕在线| 色88888久久久久久影院野外| 性色av蜜臀av浪潮av老女人| 欧美一区二区三区久久精品茉莉花 | 草民电影神马电影一区二区| 欧美成人免费大片| 韩国中文字幕2020精品| 欧美一级高清片| 小泽玛利亚一区二区免费| 日韩高清电影一区| 丁香色欲久久久久久综合网| 另类视频一区二区三区| 欧美一级bbbbb性bbbb喷潮片| 午夜视频在线看| 亚洲国产精品久久久久久| 日本少妇激情视频| 国产精品麻豆视频| 亚洲中文字幕无码av| 国产日韩欧美三区| 欧美日本国产精品| 国产精品久久久久久久久毛片 | 日韩最新在线| 26uuu日韩精品一区二区| 1769视频在线播放免费观看| 欧美网站一区二区| 日韩成人免费在线视频| 最新国产成人在线观看| 人妻精品久久久久中文字幕| 国产精品一区二区你懂的| 国产aaaaa毛片| 亚洲一区自拍| 久久在线中文字幕| 一区二区三区四区日韩| 欧美一区2区三区4区公司二百| 偷拍中文亚洲欧美动漫| 欧美激情在线一区| 超碰个人在线| 在线看欧美日韩| 日本福利片高清在线观看| 日韩精品一区二区三区四区 | 精品一区二区三区在线视频| 亚洲最新免费视频| 国产99久久| 国产欧美一区二区三区另类精品 | 日本成人免费在线观看| 91碰在线视频| 亚洲人辣妹窥探嘘嘘| 亚洲男女自偷自拍| 亚洲一二区在线| 国产99亚洲| 欧美一进一出视频| 女厕嘘嘘一区二区在线播放| 国产三区二区一区久久| 红杏视频成人| 精品国产综合久久| 好吊妞国产欧美日韩免费观看网站| 亚洲一区二区三区四区在线播放| 9999精品成人免费毛片在线看 | 亚洲 国产 欧美一区| 少妇精品久久久| 日韩欧美精品久久| 欧美美女视频| 亚州欧美一区三区三区在线| 教室别恋欧美无删减版| 日韩欧美激情一区二区| 成人av动漫| 国产精品日韩在线一区| 日韩在线无毛| 91精品国产综合久久精品性色| 国产精品高潮呻吟av| 91精品国产乱| 波多野结衣av无码| 亚洲最色的网站| 国产精品99精品无码视| 亚洲va韩国va欧美va| 毛片毛片女人毛片毛片| 色成年激情久久综合| 中文字幕乱码人妻无码久久 | 色wwwwww| 91精品国产综合久久婷婷香蕉| 亚洲不卡视频在线观看| 91福利国产精品| 亚洲天堂久久久久| 色婷婷精品久久二区二区蜜臀av| 久久久久久天堂| 欧美日韩亚洲精品一区二区三区| 欧美日韩精品在线观看视频| 欧美激情一区二区三区四区| 狂野欧美性猛交| 一区二区欧美视频| 一区二区国产精品精华液| 亚洲自拍欧美精品| 丁香社区五月天| 91精品国产乱| 欧美日韩国产中文字幕在线| 中文字幕在线日韩 | 国产精品av免费在线观看| segui88久久综合9999| 国产脚交av在线一区二区| 性爽视频在线| 91精品国产自产在线观看永久| www成人在线视频| 1769国产精品| 四虎在线精品| 91精品视频专区| 欧美日韩导航| avove在线观看| 久久一区精品| 亚洲xxxx2d动漫1| 日韩专区一卡二卡| 北条麻妃视频在线| 国产大陆a不卡| 亚洲精品成人av久久| 国产欧美日韩视频在线观看| 91精彩刺激对白露脸偷拍| 久久天堂av综合合色蜜桃网| 一本色道久久综合亚洲精品图片| 亚洲欧洲国产日本综合| 一级片中文字幕| 欧美电影免费观看完整版| www香蕉视频| 中文字幕亚洲无线码a| 免费av网站在线看| 久久国产天堂福利天堂| 欧美日韩免费观看视频| 国产精品传媒毛片三区| 欧美黄色影院| 秋霞毛片久久久久久久久| 欧美日韩日本国产亚洲在线| 久草福利视频在线| 99久久99久久综合| 美女毛片在线观看| 精品电影在线观看| 国产露脸91国语对白| 欧美成人一级视频| 网站黄在线观看| 久久99精品国产99久久6尤物| av在线理伦电影| 99re6热在线精品视频播放速度| 久久男人av| 免费网站永久免费观看| 国产毛片精品国产一区二区三区| www.99热| 在线视频中文字幕一区二区| 性高潮久久久久久久久久| 亚洲天堂第二页| 国产视频中文字幕在线观看| 国产精品久久久久久久9999| 亚洲精品蜜桃乱晃| 樱空桃在线播放| 国产在线精品一区二区| 久久嫩草捆绑紧缚| 午夜电影一区二区三区| 亚洲国产欧美另类| 亚洲人成网在线播放| 黄色免费在线网站| 91av视频在线观看| 欧美一性一交| 91好吊色国产欧美日韩在线| 久久福利视频一区二区| 99久久久无码国产精品不卡| 亚洲国产wwwccc36天堂| 亚洲精品成av人片天堂无码| 欧美乱妇40p| av成人在线播放| 狠狠色综合网站久久久久久久| 亚洲视频日本| 日本一区二区在线免费观看| 亚洲成人中文在线| 色呦呦中文字幕| 日韩免费不卡av| 国产精品一线| 精品国产成人av在线免| 亚洲国产精品v| 国产永久免费视频| 色中色综合影院手机版在线观看| 国产一区在线电影| 亚洲色成人一区二区三区小说| 国产日韩v精品一区二区| 亚洲av综合一区| 日韩精品福利网站| 欧美与亚洲与日本直播| 做爰高潮hd色即是空| 国产精品91一区二区| 一级免费黄色录像| 日韩欧美国产网站| av网站在线免费播放| 69堂成人精品视频免费| 99成人免费视频| 最新日本中文字幕| 亚洲欧美欧美一区二区三区| 丰满熟妇乱又伦| 欧美另类交人妖| 国产日本亚洲| 亚洲欧洲日夜超级视频| 日韩影院精彩在线| 黄色香蕉视频在线观看| 欧美日韩在线亚洲一区蜜芽| av在线影院| 欧美精品国产精品久久久| 99精品热视频只有精品10| 国产免费一区二区三区网站免费| 精品日韩美女的视频高清 | 久久亚洲精品视频| 青青久久精品| 亚洲免费av网| 91网站在线播放| 青草视频在线观看免费| 久久中国妇女中文字幕| 真实原创一区二区影院| 日韩精品一区二区三区不卡|