純CSS實現表單驗證

2021-09-24 06:29:20 字數 2349 閱讀 4432

github: krisachan

在我們的日常業務中,表單驗證是個很常見設計需求,像一些登入註冊框,問卷調查也都需要用到表單驗證。

一般我們的實現思路都是js監聽input框的輸入內容,判斷使用者輸入內容,從而以此來決定下一步的操作。

例如這樣:(以下例子來自優秀的開源ui庫,element)

"numbervalidateform" ref="numbervalidateform" label-width="100px" class="demo-ruleform">

"年齡"

prop="age"

:rules="[,]"

>

type="age" v-model.number="numbervalidateform.age" autocomplete="off">

type="primary" @click="submitform('numbervalidateform')">提交

"resetform('numbervalidateform')">重置

複製**

以上就是我們常規的表達驗證了,基本就都是用js來完成的,那麼我們能不能用css來實現呢?答案是可以的。這裡先上demo

上面的表單驗證就完全是由css來實現的,核心屬性就是css level 4validity。思路就是利用:valid:invalid可以對value進行判斷的特性。

/*

* css

*/ :root

.form > input

.form > .f-tips

input[type="text"]:invalid ~ input[type="submit"],

input[type="password"]:invalid ~ input[type="submit"]

input[required]:invalid + span

/** html

*/class="form"

id="form"

method="get"

action="/api/form">

賬號:data-title="賬號"

pattern="\w"

name="account"

type="text"

required />

class="f-tips">請輸入正確的賬號span>

密碼:data-title="密碼"

pattern="\w"

name="password"

type="password"

required />

class="f-tips">請輸入正確的密碼span>

name="button"

type="submit"

value="提交" />

form>

複製**

1.html5的新屬性:pattern

mdn的解釋:

檢查控制項值的正規表示式.。pattern必須匹配整個值,而不僅僅是某些子集.。使用title屬性來描述幫助使用者的模式.。當型別屬性的值為text, search, tel, url 或 email時,此屬性適用,否則將被忽略。(相容ie10+)

備註:

如果pattern裡的驗證規則不合法,例如多了長度校驗內多了空格,也是會在控制台報錯的,詳情如下:

"賬號" pattern="/[\w]/" name="account"

type="text" required />

複製**

cssjs裡的驗證規則不一樣,以下寫法是會無效的,核心校驗規則需要用包起來(目前從測試的幾個例子是這樣,具體詳情還需要翻查資料,如果有大佬知道更具體的資訊,請告知,謝謝!)

"賬號" pattern="/\w/" name="account"

type="text" required />

複製**

2.css level 4 選擇器的新屬性:invalid

詳細介紹請看我的博文[譯]19個css level 4 選擇器

魚頭的web海洋」,隨時與魚頭互動。歡迎!衷心希望可以遇見你。

純CSS實現表單驗證

關鍵在於使用css selectors levle4裡的一些偽類實現表單驗證,這些偽類有 上面的案例就是使用了 in range和 out of range,接下去我們來一一解讀下。required可以選中具有required屬性的表單元素,可以是input select和textarea,例如下面...

多個form 驗證 css實現input表單驗證

我有這個想法是因為我想完成乙個自動補全的input部件,最基本的功能是 如果input沒有內容,這隱藏下拉框 反之,顯示下拉框 我找到了乙個也許不是很完美的實現方案,描述中可能會有一些細微的區別,不過我還是很希望能做這個簡單的分享 首先,我們構造乙個簡單的form表單,僅僅只有乙個input 當輸入...

純css實現箭頭

很久之前收集的,忘記出處了。1.梯形 當元素寬 高和邊框的寬相近 等 時,改變某一邊的顏色可以看到乙個梯形 border 10px solid 000 border left color f00 width 10px height 10px 2.三角形 當元素寬 高為零,且其他邊為透明顏色時,可以形...