国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

使HTML 5數字輸入僅接受整數

開發 前端
使用HTML 5屬性來限制可以發送到服務器的內容,然后使用Javascript增強它,以限制用戶可以在第一個地方輸入的內容。所以讓我們來看看這些問題,并更好地實現它。

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

[[387372]]

整體概念是合理的:使用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 
  3.     integers = document.querySelectorAll('input[type="number"][step="1"]'), 
  4.     intRx = /\d/; 
  5.    
  6.   for (var input of integers) { 
  7.     input.addEventListener('keydown', integerChange, false); 
  8.   } 
  9.   
  10.   function integerChange(event) { 
  11.     if ( 
  12.       (event.key.length > 1) ||  
  13.       ( 
  14.         (event.key === "-") && 
  15.         (event.currentTarget.value.length === 0) 
  16.       ) || 
  17.       intRx.test(event.key) 
  18.     ) return; 
  19.     event.preventDefault(); 
  20.   } 
  21.   
  22. })(); 

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

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

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

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

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

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

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

Live Demo

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

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

懸而未決的問題

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

結論

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

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

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

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

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

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2021-03-04 08:01:30

HTML5整數HTML

2011-12-31 10:12:10

2021-11-03 13:28:17

勒索攻擊安全培訓網絡安全

2022-03-25 13:33:48

區塊鏈技術數字營銷

2017-08-11 09:22:43

2021-12-15 09:00:53

LeetCode 羅馬數字整數

2021-12-14 09:01:01

LeetCode整數羅馬數字

2011-07-14 09:16:10

HTML 5

2016-04-08 09:37:16

2011-05-17 09:39:28

HTML5Google

2021-03-09 08:14:44

5G專網ToB發展

2023-02-09 10:24:12

2018-09-21 10:31:38

華為

2021-01-13 10:05:31

數字化轉型數字化CIO

2023-05-25 10:45:36

2025-09-09 07:10:00

Chrome瀏覽器

2013-01-24 10:26:04

HTML5HTML 5HTML5的未來

2011-06-15 09:38:56

HTML 5

2009-05-26 08:51:38

HTML 5FlashOpera

2012-04-24 09:48:49

HTML5
點贊
收藏

51CTO技術棧公眾號

婷婷综合一区| 色老头一区二区三区在线观看| 国产精品免费播放| 亚洲男人天堂2024| 国产精品欧美大片| 欧美日韩精品中文字幕一区二区| 国产欧美日韩在线视频| 日本不卡免费新一二三区| 久久久久久久久岛国免费| 国产福利电影在线| 日韩中文字幕国产| 黄色成人在线网址| 国产成人无码av在线播放dvd| 欧美艳星brazzers| 久久久精品区| 欧美日韩一区二区三区在线观看免 | free亚洲| 亚洲精品国产精品久久清纯直播| 成人在线国产| 久久国产成人精品国产成人亚洲| 欧美丰满高潮xxxx喷水动漫| 亚洲三级精品| 国模吧无码一区二区三区| 国产麻豆精品久久| www.好吊操| 精品国产一二三区| 91欧美在线| 欧美男女交配视频| 一区二区三区 在线观看视| 在线观看不卡| 亚洲女优视频| 8x拔播拔播x8国产精品| 99re热视频精品| 中文不卡1区2区3区| 久久国产精品-国产精品| 精品免费在线视频| 免费萌白酱国产一区二区三区| 最新av网址在线观看| 欧美一卡2卡三卡4卡5免费| 国产精品99久久久久久动医院| 999sesese| 超薄丝袜一区二区| 国产成人精品三级麻豆| 极品av在线| 日本精品国语自产拍在线观看| 色婷婷av一区二区三区大白胸| 亚洲三级网页| aaa大片免费观看| 午夜精品在线视频| 国产三级精品在线| 日本免费一区二区视频| 岳毛多又紧做起爽| 久久久久999| 成a人片国产精品| 激情亚洲小说| 欧美精品99久久| 久久久精品电影| 久久综合成人精品亚洲另类欧美| 亚洲成人1区| 99视频在线免费| 欧美激情在线观看| 国产精品私人自拍| 欧洲亚洲成人| 超碰在线中文| 成人网中文字幕| 在线中文字幕一区| 国产视频欧美| 国产后进白嫩翘臀在线观看视频| 神马影院午夜我不卡| 日韩精品一区二区三区三区免费| 久久亚洲图片| 成人免费影院| 成人中文字幕在线播放| 久久天天躁日日躁| 国产精品乱码一区二区三区软件| 老司机aⅴ在线精品导航 | 欧美精品在欧美一区二区少妇| av网站手机在线观看| 欧美激情极品| 能在线观看av网站| 91精品国产综合久久香蕉最新版 | caoporn97免费视频公开| 午夜精品久久久99热福利| 亚洲视频一区在线观看| 天天躁日日躁狠狠躁欧美| 婷婷福利视频导航| 亚洲自拍另类欧美丝袜| 日韩精品中文字幕一区| 国产成人福利片| 久久99国产精品久久99大师| 偷拍自拍在线| 午夜精品短视频| xxxx欧美18另类的高清| 亚洲免费看黄网站| 黄色在线成人| 日韩天堂在线| 免费xxxxx网站中文字幕| 国产成人精品一区二区三区福利| 欧美精品一区二区三区高清aⅴ| 99视频超级精品| 欧美精品一区二区三区精品| 午夜在线视频| 国产精品久久国产| 欧亚精品在线观看| 欧美一区二区三区在线观看视频| 成人自拍视频在线观看| 国产91精品对白在线播放| 美女羞羞视频在线观看| 六月婷婷激情综合| 国产精品久久久91| 精品国产免费久久| 精品视频在线一区| 欧美777四色影视在线| 中文字幕在线乱| 欧美又大粗又爽又黄大片视频| 日韩欧亚中文在线| 国产一区二区视频在线播放| 欧美精品国产白浆久久久久| 色欧美激情视频在线| 久久9精品区-无套内射无码| 91久久大香伊蕉在人线| 中文字幕精品一区二区精品| 精品国产鲁一鲁一区二区张丽| 国产一区二区毛片| 国产一区99| 韩日成人影院| 四虎影院在线播放| 日韩免费在线观看av| 成人国产精品久久久| 国产亚洲精品日韩| 91黄视频在线观看| 久久久午夜电影| 亚洲女同在线| 亚洲小说图片视频| 中国色在线日|韩| 色久视频在线播放| 久久精品99国产| 欧美日韩精品免费在线观看视频| 97成人在线视频| 亚洲美女av网站| 狠狠久久亚洲欧美专区| 大陆成人av片| 亚洲色诱最新| 亚洲va久久久噜噜噜久久| 蜜桃视频www网站在线观看| 中国在线观看免费国语版电影| 久久精品国产精品亚洲色婷婷| 欧美理论一区二区| 国产精品美女免费视频| 精品国产一区二区三区久久久| 日韩美女视频在线| 天天影视色香欲综合网老头| 久久蜜臀精品av| 久久99精品国产91久久来源| 一区二区三区网站| 欧美久久久久久久久久久久久| 欧美精品与人动性物交免费看| 国产精品久久久久久久久久ktv| 精品国产一区二区三区久久狼黑人 | 欧美精品色综合| 亚洲国产中文字幕在线视频综合| 99国产精品99久久久久久| 久久蜜桃资源一区二区老牛| 成人在线一区| 成人在线视频你懂的| 成人黄页网站视频| 蜜桃av在线| 欧美aaa免费| 色影视在线观看| 黄视频在线播放| 亚州色图欧美色图| 欧美黑人孕妇孕交| 色偷偷福利视频| 中文字幕第80页| 波多野结衣50连登视频| 中文字幕制服丝袜在线| 日本午夜精品一区二区三区| 国产在线精品一区二区三区| 亚洲va久久久噜噜噜| 国产精品视频导航| 日韩免费av片在线观看| 午夜精品福利在线观看| 欧美国产第一页| 久久国产精品久久久久久久久久| 日韩性生活视频| 精品国产一区二区三区久久| 色爱av美腿丝袜综合粉嫩av| 最近2019免费中文字幕视频三 | 欧美国产另类| 久久中文字幕二区| 日韩欧美电影| 99热国内精品| 欧美在线视屏| 国内综合精品午夜久久资源| 女同性一区二区三区人了人一| 重囗味另类老妇506070| 国产精品magnet| 亚洲影院一区| 久久精品理论片| 国产v综合v亚洲欧|