输入元素是否有onload事件?

时间:2010-09-14 12:30:32

标签: javascript

当呈现输入元素或任何其他html元素时,是否可以触发Javascript脚本。该脚本应该在html标记内触发,这样我们就可以将'this'传递给js函数。

7 个答案:

答案 0 :(得分:27)

不,没有这样的事件。

但是,直接放在HTML元素之后的<script>标记会产生类似的效果:它会在元素渲染后直接执行:

<input type="text" id="input123" value="Hello World!">

<script>
alert("Input123 is now ready:"+document.getElementById("input123).value);
</script>

但是,在大多数情况下,最好使用文档范围的load(或DOMReady或jQuery的.ready())来启动任何脚本操作。那时DOM将完全准备就绪。

答案 1 :(得分:25)

模拟此类事件的一种方法是创建自定义数据 - * atttribute(HTML-5有效)并将其用作选择器。然后在主javascript代码中,您可以为具有此特定data-XXX属性的任何内容添加选择器,并评估其中的javascript代码。

示例HTML代码:

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

示例Javascript代码(使用jQuery)。也可以使用普通DOM来查找具有此属性的元素。

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

这很有效。我实际上是在生产中使用它。

答案 2 :(得分:5)

没有。但是,在输入元素标记之后放置的任何脚本都将在输入元素可用的情况下运行,因为它在脚本之前被解析。所以,如果这一切都在体内:

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

无论如何,这一切都会奏效。

答案 3 :(得分:3)

我有一个动态添加到文档中的输入元素,需要初始化。

它并不完美,但这是第一次使用输入时初始化小部件的方法:

<input onfocus="initwidget(this)">

答案 4 :(得分:1)

有一个技巧。输入有 onloadonerror 事件具有 type="image" src="..." 属性。您可以通过将 emptyalways wrong 传递给 onerror 来使用 src,并在 onerror 事件触发时将类型更改为正确的类型:

function func(input) {
    console.log("Input loaded");
    input.type = "text";
    input.value = "Worked!";
    input.removeAttribute("src");
    // ...
}
<input type="image" value="" onerror="func(this)" src=""/>

答案 5 :(得分:0)

不,这是不可能的。但是,你可以使用jQuery + $(document).ready(function)在页面加载完成后立即修改你想要的任何输入字段。

答案 6 :(得分:0)

不,没有。只需从文档“ready”处理程序运行代码,或使用类似jQuery的方法为您提供一种在“就绪”运行代码的方法(即DOM完成但图像可能尚未加载)。