我自己的功能像onclick一样触发

时间:2012-05-15 14:19:28

标签: javascript

我认为标题不是很适应,但我不知道该怎么做。如果你愿意,可以编辑它。

我想要的是非常奇怪,但请不要贬低。我想创建自己的函数,将被调用:<input type="text" onMyFunction="alert('hi');" />

如果不可能,请告诉它,我将其视为最佳答案。

P.S:如果它有效,该函数将永久调用,在这个函数中我会在开头放一个if

3 个答案:

答案 0 :(得分:2)

您可以使用纯JavaScript执行此操作,但jQuery更简单:

<input id="someId" type="text" />

$('#someId').bind('myCustomEvent', function(event) {
  alert('hi');
});

并在代码的其他位置触发它:

$("#someId").trigger('myCustomEvent');

此处有更多信息:http://dailyjs.com/2009/11/14/jquery-custom-events/

答案 1 :(得分:1)

如果我理解这一点,那么当你的javascript函数被调用时,你想要发生一些事情。为什么不把你想要发生的事情放在你的实际功能中呢?

<script type="javascript/text">
function MyFunction(){
// some code
alert('hi');
</script>

我不确定永久调用你的意思,但是在上面的代码中,每次调用函数时都会出现一个显示hi的警报,类似于你在问题中描述的,但是使用了不同的实现。 / p>

至于实际使用onMyFunction =“alert('hi')”,我不相信这是可能的,因为onClick,onload和onmouseover事件都是内置的。所以除非你编写额外的代码来正确实现onMyFunction ,我没有办法做到这一点。

答案 2 :(得分:1)

你遇到的问题是浏览器没有意识到它是一个功能。它是一个字符串,使它成为一个函数的唯一方法是将它指定为函数。

一种方法是在文档就绪或onload上,您在文档中查询具有该属性的元素并重新分配它。

<强> HTML

<input id="foo1" type="text" onMyFunction="alert(this.value);" value="1"/>
<input id="foo2" type="text" onMyFunction="alert(this.value);" value="2"/>​

<强>的JavaScript

var winLoad = window.onload;
window.onload = function(){
    var i, 
        elem,
        fncStr,    
        elems = document.querySelectorAll("[onMyFunction]");

    if (winLoad) {
        winLoad();
    }

    for (i=0;i<elems.length;i++) {
        elem = elems[i];
        fncStr = elem.getAttribute("onMyFunction");
        elem.onMyFunction = new Function(fncStr);        
    }

    var tb1 = document.getElementById("foo1");
    tb1.onMyFunction();​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
}

Example running here

此代码使用querySelectorAll,并非所有浏览器都支持。