Is there an onload event for input elements?

后端 未结 6 691
北恋
北恋 2020-12-01 07:15

Is it possible to trigger a Javascript script, when an input element or any other html element is rendered. This script should be triggered from within the html tag, so that

相关标签:
6条回答
  • 2020-12-01 07:57

    No, there is no such event.

    However, a <script> tag placed directly after the HTML element would have a similar effect: It would be executed directly after the element has been rendered:

    <input type="text" id="input123" value="Hello World!">
    
    <script>
    alert("Input123 is now ready:"+document.getElementById("input123").value);
    </script>
    

    In most cases, however, it is best to use the document-wide load (or DOMReady, or jQuery's .ready()) to start any script operations. The DOM will be fully ready then.

    0 讨论(0)
  • 2020-12-01 08:03

    No this is not possible. You could however use jQuery + $(document).ready(function) to modify any input field you want right after the page has finished loading.

    0 讨论(0)
  • 2020-12-01 08:12

    A way to simulate such an event is to create a custom data-* atttribute (HTML-5 valid) and use that as a selector. Then in the main javascript code, you can add a selector for anything which has this specific data-XXX attribute and evaluate the javascript code inside.

    Example HTML code:

    <div data-onload="sampleFunction('param1', 2)"></div>
    

    Example Javascript code (using jQuery). It is also possible to use normal DOM to find elements with this attribute.

    /* Find any element which has a 'data-onload' function and load that to simulate an onload. */
    $('[data-onload]').each(function(){
        eval($(this).data('onload'));
    });
    

    This works well. I actually use it in production.

    0 讨论(0)
  • 2020-12-01 08:18

    No. However, any script placed after the markup of the input element, will be run with the input element available because it is parsed before the script. So, if this was all in the body:

    <input id="a">
    <script>document.getElementById('a');</script>
    

    That would all work anyway.

    0 讨论(0)
  • 2020-12-01 08:19

    No, there is not. Just run your code from the document "ready" handler, or use something like jQuery to give you a way to run code at "ready" (which is when the DOM is complete but images may not have loaded).

    0 讨论(0)
  • 2020-12-01 08:21

    I have an input element that gets dynamically added to the document and needs to get initialized.

    It's not perfect, but here's a way to initialize the widget the first time the input is used:

    <input onfocus="initwidget(this)">
    
    0 讨论(0)
提交回复
热议问题