Javascript OnPaste

后端 未结 2 408
野性不改
野性不改 2020-11-29 05:57

I have this right now:

This does infact work, except, it r

2条回答
  •  庸人自扰
    2020-11-29 06:33

    The onpaste event fires before the input's value is changed. You need something such as a setTimeout:

    I'm storing a reference to this inside a global var as this is not accessible inside the scope of a timeout function which is attached to the window object.

    I'm using 4 miliseconds as the Timeout as it's the minimum valid Interval/Timeout in the HTML5 specification. Edit: As noted in the comments, you may also use 0 miliseconds as timeOut which is automatically recalculated to 4. jsPerf tests.

    Fiddle

    You may as well use a function call inside your onpaste event passing this as a parameter to prevent your HTML mixing with JS too much. :)

    And here's a function easier to read and which you can use in multiple inputs:

    function pasted(element) {
        setTimeout(function(){
            alert(element.value);
        }, 0); //or 4
    }​
    

    Which can be called with simply onPaste="pasted(this)" for any input.

    Fiddle

提交回复
热议问题