以往 HTML 的 input 輸入框,無法即時反映使用者的輸入內容。
onkeyup、onkeydown 事件,無法即時、精確地取得使用者的輸入資料;而 onchange、onblur 事件,要等到失去焦點時,或按下 Enter 時,才會被觸發。

現在 HTML5 新增的 input 事件,可達成「立即、精準地觸發」,類似 AJAX 功能。唯一的缺點,是不支援 IE 瀏覽器,但支援其他各瀏覽器。

如下 html 程式碼,可測試出,input 事件可達成「立即、精準地觸發」;舊有的 change 事件,則需要失去焦點時,或按下 Enter 時,才會被觸發。

 <!DOCTYPE html>
<html >
<head>
<script>
function myFunc1(input) {
document.getElementById("output1").value = input;
} function myFunc2(input) {
document.getElementById("output2").value = input;
}
</script>
</head>
<body>
<input id="input1" type="text" oninput="myFunc1(this.value)" />
<br />
<input id="input2" type="text" onchange="myFunc2(this.value)" />
<p></p>
<output id="output1"></output>
<br />
<output id="output2"></output>
</body>
</html>

oninput、onchange 比較

進一步聯想,若寫的是: 購物商場、網路書城,若要讓 input 或 textarea 輸入框,能夠「立即、精準地觸發」,只要使用 HTML5 的 input 事件,則不必自己寫程式去加入 AJAX 功能,就能輸鬆地達成需求。

如下 html 程式碼:

 <!DOCTYPE html>
<html >
<head>
<title>oninput</title>
<script>
function myFunc1(input) {
document.getElementById("output1").value =
input * 230;
}
</script>
</head>
<body>
書名:快快樂樂學HTML5, <br />
價格:230, 購買數量:
<input id="input1" type="number" step="1" value="0" oninput="myFunc1(this.value)" />
<br /><br />
結帳金額:
<output id="output1"></output>
</body>
</html>


圖 1 執行結果

HTML5 的 input 事件,主要的缺點,是不支援微軟的 IE 瀏覽器,但支援 Chrome、Firefox、Opera、Safari、微軟的 Edge。
因此在網頁裡,引用此事件,對手機、平板上的操作,並不造成影響。
--------------------------------------------
--------------------------------------------
參考書籍:

[1] HTML5 完美風暴(第三版), ch5, 作者:呂高旭
http://www.books.com.tw/products/0010668517
--------------------------------------------
相關文章:

[1] HTML 事件属性
http://www.runoob.com/jsref/event-oninput.html
http://www.w3school.com.cn/tags/html_ref_eventattributes.asp

[2] HTML5 input 事件检测输入框变化
http://www.cnblogs.com/luozhihao/p/4649868.html

[3] HTML5 标准事件 oninput 实现输入检测
https://www.fedte.cc/p/604.html
--------------------------------------------
--------------------------------------------

最新文章

  1. 【译文】 GC 安全点 和安全区域
  2. javascript基础03
  3. 深入浅出JMS(二)--ActiveMQ简单介绍以及安装
  4. SOA架构设计(转发)
  5. http 学习 1-2 chapter2-URL与资源
  6. ORA-12519, ORA-00020异常产生原因及解决方案
  7. vim 快捷键 以及技巧
  8. overloading
  9. 找不到或无法加载已注册的 .Net Framework Data Provide
  10. AIX filesystemcache引发的Oracle事故
  11. html(第一天,div+css)
  12. PHP网站安装程序的原理及代码
  13. 从零开始理解JAVA事件处理机制(1)
  14. Javascript中的Microtask和Macrotask——从一道很少有人能答对的题目说起
  15. (转)Geoserver基础配图研究
  16. Android--字符串和Drawable之间互相转化
  17. ORACLE常用操作命令
  18. Java锁的设计
  19. 批处理实现mysql的备份
  20. spring boot 报错 Error creating bean with name

热门文章

  1. Python3|ddt|unittest|浅议数据驱动测试
  2. 微服务(入门三):netcore ocelot api网关结合consul服务发现
  3. 关于Vue.use()使用详解
  4. 关于linux上postgresql的一些理解
  5. 深入理解 new 操作符
  6. 华为云提供针对Nuget包管理器的缓存加速服务
  7. .NET之微信消息模板推送
  8. webrtc aecd算法解析一(原理分析)
  9. Linux学习笔记--vi
  10. 细说mysql索引