動態監聽輸入框值的變化

鍵盤上的眼淚發表於2019-02-16

一、鍵盤事件

1.onkeydown
onkeydown 事件會在使用者按下一個鍵盤按鍵時發生。
2.onkeypress
onkeypress 事件會在鍵盤按鍵被按下並釋放一個鍵時發生。
onkeypress 事件在所有瀏覽器中不能觸發所有按鍵(例如:ALT, CTRL, SHIFT, ESC) 。如果只對使用者是否已經按下一個按鍵檢測, 可以使用 onkeydown 取代, onkeydown被所有按鍵觸發。
onkeypress 屬性在使用者(在鍵盤上)按鍵時觸發。
提示:相對於 onkeypress 事件的事件次序:
onkeydown onkeypress onkeyup
3.onkeyup
nkeyup 事件會在鍵盤按鍵被鬆開時發生。


以上事件是鍵盤事件,但是當使用onkeydown、onkeypress、onkeyup作為監聽事件時,會發現一些複製貼上等操作用不了。這時候我們需要更專業的解決方案:HTML5標準事件oninput、onchange和IE專屬的事件properchange。


二、輸入框事件

1.oninput&onchange:
oninput和onchange都是事件物件,當輸入框的值發生改變時觸發該事件。不同的是,oninput是在值改變時立即觸發,而onchange是在值改變後失去焦點才觸發,並且可以用在非輸入框中,如:select等。
2.propertychange:
功能同oninput,用以替代oninput在IE9以下的不相容性。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>onChange()與propertychange()</title>
</head>
<body>
    <h1>onChange():相應的值改變且在失去焦點後才會觸發</h1>
    <input type="text" placeholder="onchangge事件" id="onchangge">
    <br>
    <h1>propertychange():相應的值改變就會觸發,但是隻對ie有效</h1>
    <input type="text" placeholder="propertychange事件" id="propertychange">
</body>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
    $(`#onchangge`).change(function () {
        console.log(`我被觸發了1`);
    })
    $(`#propertychange`).bind(`input propertychange`, function() {
        console.log(`我被觸發了2`);
    });
</script>
</html>

3.output:是h5的標籤,IE系列瀏覽不相容,主要用於計算輸出。

<!DOCTYPE html>
<html>
<body>

<form oninput="x.value=parseInt(a.value)+parseInt(b.value)">0
<input type="range" id="a" value="50">100
+<input type="number" id="b" value="50">
=<output name="x" for="a b"></output>
</form>

<p><b>註釋:</b>Internet Explorer 不支援 <output> 標籤。</p>

</body>
</html>

相關文章