HTML5中常用表單整理
在整理表單元素之前,首先要搞清楚表單都是幹什麼用的,用在哪裡?為什麼要用表單...
- HTML 表單用於蒐集不同型別的使用者輸入資訊。
- 表單元素指的是不同型別的 input 元素、核取方塊、單選按鈕、提交按鈕等等;
- 當需要將資料提交至後臺(伺服器端)處理時,就可能需要通過部分表單的功能進行提交;
那就通過下文帶大家初步進行一個瞭解(內含小Demo),可以照著敲寫一番~
HTML中傳統表單(常用)
- from;//定義表單,所有表單的起點,from標籤中有以下常用屬性
- action 屬性:定義在提交表單時執行的動作。
- Method 屬性 :method 屬性規定在提交表單時所用的 HTTP 方法(GET 或 POST)
- Name 屬性:如果要正確地被提交,每個輸入欄位必須設定一個 name 屬性。
- input元素: input是最重要的表單元素,它有很多形態,根據不同的 type 屬性。
- text , radio , checkbox , button , submit , reset , file , password , hidden... ;
- label:標記標籤,有點類似於span標籤;
- 下文會主要介紹input元素中常用的type屬性及涉及的一些相關知識點:
1、 submit按鈕有預設行為,如果我們不想使用跳轉這樣的行為需要阻止它的預設行為,同樣的還有reset...
解決方案:
<from action="1.html">
<input type="submit" value="點我啊" id="submit">
</from>
<script>
var submit = document.getElementById('submit');
submit.onclick = function (e) {
e = e ||window.event;
e.preventDefault ?e.preventDefault():e.returnValue = false;
}
</script>
2、 input中的事件 :
onblur :‘ 失去焦點 ’;
onfocus :‘ 獲取焦點 ’ ;
onchange :‘ 內容改變 ’;
onclick : ‘ 點選 ’;
onkeydown : ‘ 鍵盤按下 ’ ;
onkeyup : ‘ 鍵盤抬起 ’;
onkeypress : ‘ 鍵盤長按 ’;
autofocus : 自動獲取游標;
3 、 單選框 radio:
<!--實現點選男返回0,點選女返回1,未知返回2;-->
<input type="radio" name="sex" id="sexMan" value="0" checked/><label for="sexMan">男</label>
<input type="radio" name="sex" id="sexWoman" value="1"/><label for="sexWoman">女</label>
<input type="radio" name="sex" id="nosex" value="2"/><label for="nosex">未知</label>
<input type="submit" id="submit" value="點我啊"/>
<script>
var submit = document.getElementById('submit');
submit.onclick = function (e) {
e = e || window.event;
e.preventDefault ? e.preventDefault() : e.returnValue = false;
//->性別的VALUE我們一般使用數字來代表男女,因為數字比漢字佔用的記憶體小,也算是一個效能優化吧
var sexList = document.getElementsByName('sex'),
sexV = 0;
for (var i = 0, len = sexList.length; i < len; i++) {
var sexItem = sexList[i];
if (sexItem.checked) {
sexV = sexItem.value;
break;
}
}
console.log(sexV);
}
</script>
4、 多選框 checkbox
<!--實現全選反選功能和點選提交按鈕,實現在控制檯輸出所選內容功能-->
<input type="button" value="全選" id="checkAll"/>
<input type="button" value="反選" id="checkConvert"/>
<input type="checkbox" name="hobby" value="吃飯" id="hobby_eat"/><label for="hobby_eat">吃飯</label>
<input type="checkbox" name="hobby" value="睡覺" id="hobby_sleep"/><label for="hobby_sleep">睡覺</label>
<input type="checkbox" name="hobby" value="打豆豆" id="hobby_playbean"/><label for="hobby_playbean">打豆豆</label>
<input type="submit" id="submit" value="點我啊!"/>
<script>
var checkAll = document.getElementById('checkAll'),
checkConvert = document.getElementById('checkConvert');
var hobbyList = document.getElementsByName('hobby'),
submit = document.getElementById('submit');
checkAll.onclick = function () {
for (var i = 0, len = hobbyList.length; i < len; i++) {
hobbyList[i].checked = true;
}
};
checkConvert.onclick = function () {
for (var i = 0, len = hobbyList.length; i < len; i++) {
var bobbyItem = hobbyList[i];
//bobbyItem.checked ? bobbyItem.checked = false : bobbyItem.checked = true;
bobbyItem.checked = !bobbyItem.checked;
}
};
submit.onclick = function () {
var ary = [];
for (var i = 0, len = hobbyList.length; i < len; i++) {
var hobbyItem = hobbyList[i];
if (hobbyItem.checked) {
ary.push(hobbyItem.value);
}
}
console.log(ary.join('|'));
}
</script>
5 、hidden :代表一個 HTML 表單中的某個隱藏輸入域
<!-- 實現點選提交後控制檯輸出hidden中value所儲存的值-->
<input type="hidden" value="哈哈哈" id="tempInp"/>
<input type="submit" id="submit" value="點我啊!"/>
<script>
//->我們在頁面中需要獲取和儲存一些資訊,但是這些資訊還不想讓使用者看見,可以使用隱藏的文字框來處理,但是現在一般都不用了
var submit = document.getElementById('submit'),
tempInp = document.getElementById('tempInp');
submit.onclick = function () {
console.log(tempInp.value);
}
</script>
6、文字域
<textarea name="" id="" style="width: 300px;height: 150px; resize: none;">
<!--resize:none 禁止文字域的手動縮放-->
</textarea>
<!--http://ueditor.baidu.com/website/ ueditor百度編輯器(富文字編輯器) 他們的編輯區域不是使用文字域,而是使用contenteditable="true"設定一個非表單元素也能編輯-->
HTML中新表單
1、 HTML5中新增加的表單元素
- input: serach , url , eamil , tel , number , range , color , date , time
- progress : 進度條 ;
- datalist : 二級下拉框;
ps :新增加的表單元素在IE6~8下不相容,而且沒辦法處理相容(HTML5.MIN.JS是不能處理 表單這個相容的);
2 、 progress :標籤標示任務的進度(程式)。
<!-- 末尾新增了定時器實現動態效果 -->
<progress max="100" value="0" id="progress"></progress>
<script>
var count = 0;
var timer = window.setInterval(function () {
if (count >= 100) {
window.clearInterval(timer);
progress.value = 100;
return;
}
count += 10;
progress.value = count;
}, 1000);
</script>
3 、模擬progress(專案中一般會自己寫progress):
<!-- CSS用到了linear-gradient和transition 低版本瀏覽器不相容 -->
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.box {
position: relative;
margin: 20px auto;
width: 500px;
height: 30px;
border: 1px solid #F4F4F4;
}
.progress {
position: absolute;
top: 0;
left: 0;
width: 0;
height: 100%;
background: -webkit-linear-gradient(top left, orange, green, cornflowerblue);
background: -moz-linear-gradient(top left, orange, green, cornflowerblue);
background: -ms-linear-gradient(top left, orange, green, cornflowerblue);
background: -o-linear-gradient(top left, orange, green, cornflowerblue);
background: linear-gradient(top left, orange, green, cornflowerblue);
-webkit-transition: all .5s linear 0s;
-moz-transition: all .5s linear 0s;
-ms-transition: all .5s linear 0s;
-o-transition: all .5s linear 0s;
transition: all .5s linear 0s;
}
</style>
</head>
<body>
<div class="box">
<div class="progress" id="progress"></div>
</div>
<script>
var count = 0;
var timer = window.setInterval(function () {
if (count >= 100) {
window.clearInterval(timer);
progress.style.width = count + '%';
return;
}
count += 10;
progress.style.width = count + '%';
}, 500);
</script>
</body>
4、datalist
<!-- 輸入蘋果出現下拉提示資訊 -->
<input type="text" id="search" list="searchList"/>
<datalist id="searchList">
<option value="蘋果">蘋果</option>
<option value="蘋果手機">蘋果手機</option>
<option value="蘋果電腦">蘋果電腦</option>
<option value="macbook">macbook</option>
</datalist>
5、color:顏色選擇器
<style>
html, body {
width: 100%;
height: 100%;
overflow: hidden;
}
</style>
<input type="color" id="colorInp"/>
<script>
colorInp.value = '#ffffff';
colorInp.onchange = function () {
document.body.style.backgroundColor = this.value;
}
</script>
6、range:滑塊控制元件
<input type="range" max="65" min="18" value="25" id="rangeInp"/>
<input type="number" value="25" style="width: 50px; text-align: center;" disabled id="ageInp"/>
<script>
rangeInp.oninput = function () {
ageInp.value = this.value;
};
//->oninput:相當於PC端的keydown、keyup事件,但是在移動端,由於鍵盤都是虛擬的,我們無法像PC端一樣監聽到鍵盤的觸發(也就是不能使用keydown、keyup),所以我們統一使用input事件來代替之前的事件 =>"當表單元素操作過程中觸發這個事件"
</script>
7、email (郵箱,內建驗證)
<input type="email" id="userEmail"/>
<span id="spanEmail">郵箱格式有錯誤!</span>
<script>
userEmail.onblur = function () {
console.log(this.checkValidity());//->內建驗證:不輸入內容是TRUE,輸入格式錯誤為FALSE,輸入正確為TRUR
}
</script>
8、placeholder ( 輸入框內提示內容,低版本瀏覽器不相容)
<style>
input {
margin: 20px;
padding: 0 5px;
width: 300px;
height: 30px;
line-height: 30px;
border: 1px solid #000;
}
</style>
<input type="email" placeholder="請輸入郵箱!"/>
placeholder相容性處理
<link rel="stylesheet" href="css/reset.min.css"/>
<style>
.inpBox {
position: relative;
margin: 20px auto;
width: 300px;
height: 30px;
}
.inpBox input, .inpBox span {
padding: 0 5px;
width: 288px;
height: 28px;
line-height: 28px;
border: 1px solid green;
}
.inpBox span {
display: none;
position: absolute;
top: 1px;
left: 6px;
z-index: 2;
padding: 0;
border: none;
color: #ccc;
cursor: text;
}
</style>
</head>
<body>
<div class="inpBox">
<input type="text" id="userName" placeholder="請設定使用者名稱"/>
<span id="tipName">請設定使用者名稱</span>
</div>
<script>
if (window.navigator.userAgent.indexOf('MSIE') >= 0) {
//->IE
var tipName = document.getElementById('tipName'),
userName = document.getElementById('userName');
tipName.style.display = 'block';
userName.placeholder = null;
tipName.onclick = function () {
userName.focus();
};
userName.onkeyup = userName.onkeydown = function () {
var val = this.value;
tipName.style.display = val.length === 0 ? 'block' : 'none';
}
}
</script>
</body>
(以下自行在瀏覽器中嘗試..簡單且不常用)
<input type="search"/><!--在手機上,有的手機會在文字框的末尾放一個搜尋圖示-->
<input type="url"/>
<input type="email">
<input type="tel">
<input type="number" min="18" max="65" value="25" step="1"/>
<input type="date" id="dateInp"/>
<input type="time"/>
新的表單元素的增加帶來了什麼樣的作用?
1 方便我們的開發,新的元素提供很多強大的功能,例如:日曆...
2 在移動端,我們使用INPUT新的型別,當使用者輸入的時候,手機會根據型別調取出最符合 使用者輸入的虛擬鍵盤,例如:我們使用的是number型別,那麼調取出來的就是數字鍵盤...
3 某些型別自帶了表單驗證
CSS:userEmail:valid{} #userEmail:invalid{}
JS: this.checkValidity()
4 提示屬性:placeholder 用的比較多
那就先了解這麼多,
以上,如有不明之處,歡迎問詢~如有不妥之處,感謝指正!;
相關文章
- HTML5中的表單HTML
- HTML5 Canvans 常用API整理HTMLAPI
- JavaScript常用單詞整理JavaScript
- HTML5系列:HTML5表單HTML
- HTML/CSS常用單詞整理HTMLCSS
- HTML5中form表單功能介紹分享HTMLORM
- ORACLE_系統字典常用表整理Oracle
- Vue中form表單常用rules校驗規則VueORM
- 整理的一些常用系統表 (轉)
- html5之新增表單屬性HTML
- html5整理(一)HTML
- 分享之前整理的EBS常用表關聯圖 TRM
- 常用HTML標籤3:表單HTML
- 常見HTML5新增表單特性演示HTML
- HTML5的新的表單屬性HTML
- HTML5表單資訊驗證工作原理HTML
- HTML5表單新增元素與屬性HTML
- 全新改進的HTML5表單建立HTML
- RMAN常用命令——不斷整理中
- 第九課 表單及表單控制元件 html5學習4控制元件HTML
- html5 audio整理HTML
- Linux常用命令整理,簡單實用!Linux
- 常用操作單選框radio程式碼整理
- HTML5對於表單的增強DemoHTML
- HTML5 學習筆記 表單屬性HTML筆記
- HTML5表單新增元素與屬性 (續)HTML
- X5.3中常用到的jQuery整理jQuery
- 1.4 常用HTML標籤3:表單HTML
- jquery常用表單&DOM操作方法jQuery
- 常用JS方法整理JS
- js常用方法整理JS
- 常用函式整理函式
- PHPmemcached常用指令整理PHP
- ORACLE EBS常用表及查詢語句(最終整理版)Oracle
- 22個HTML5和CSS3表單教程HTMLCSSS3
- 【中後臺應用】從表單抽象到表單中臺抽象
- 常用的表單驗證程式碼分享
- CSS 中的常用尺寸單位CSS