如下圖所示:
郵政“郵政編碼”字段,數(shù)據(jù)庫(kù)中是varchar2(10)。
但是amazeui的頁(yè)面校驗(yàn)中,關(guān)于字符長(zhǎng)度的校驗(yàn)方式如下:
JS 表單驗(yàn)證
JS 表單驗(yàn)證基于 HTML5 的各項(xiàng)驗(yàn)證屬性進(jìn)行:
required
: 必填;
pattern
: 驗(yàn)證正則表達(dá)式,插件內(nèi)置了 email
、url
、number
三種類型的正則表達(dá)式;
minlength
/maxlength
: 字符限制;
min
/max
: 最小、最大值限制,僅適用于數(shù)值類型的域;
minchecked
/maxchecked
: 至少、至多選擇數(shù),適用于 checkbox
、下拉多選框,checkbox
時(shí)將相關(guān)屬性的設(shè)置在同組的第一個(gè)元素上;
.js-pattern-xx
: 驗(yàn)證規(guī)則 class,正則庫(kù)中存在的規(guī)則可以通過(guò)添加相應(yīng) class 實(shí)現(xiàn)規(guī)則添加。
注意:
HTML5 原生表單驗(yàn)證中 pattern
只驗(yàn)證值的合法性,也就是可以不填,如果填寫則必須符合規(guī)則。如果是必填項(xiàng),仍要添加 required
屬性。該插件與 HTML5 的規(guī)則保持一致。
<!-- 下面三種寫法等效 -->
<!-- 只內(nèi)置了 email url number 三種類型的正則,可自行擴(kuò)展 -->
<input type="email"/>
<!-- js-pattern-xx 其中 xx 為 pattern 庫(kù)中的 key -->
<input type="text" class="js-pattern-email"/>
<input type="text" pattern="^(...email regex...)$"/>
即maxlength=10,amazeui的意思是可以輸入10個(gè)字(數(shù)字、字母、漢字等同對(duì)待,都視為一個(gè)字)
但是假如前段輸入了10個(gè)漢字”中中中中中中中中中中“,提交后肯定數(shù)據(jù)庫(kù)長(zhǎng)度溢出,因?yàn)樵撟侄螖?shù)據(jù)庫(kù)的長(zhǎng)度是varchar2(10)即10byte只能存3.3333個(gè)不到4個(gè)漢字(因?yàn)橐粋€(gè)漢字如果GBK\GB2312編碼占2個(gè)字節(jié),但是unicode\utf-8編碼占3個(gè)字節(jié))。
所以僅maxlength=10不能正確的限制輸入,還要加上js-pattern-number這個(gè)限制(這個(gè)確保輸入的是整數(shù),這樣漢字就輸入不進(jìn)去了)。
總結(jié)
到此這篇關(guān)于amazeui頁(yè)面校驗(yàn)功能的實(shí)現(xiàn)代碼的文章就介紹到這了,更多相關(guān)amazeui頁(yè)面校驗(yàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!