我认为标题不是很适应,但我不知道该放什么。如果需要,请对其进行编辑。
我想要的很奇怪,但请不要投反对票。我想创建自己的函数,该函数将被这样调用:<input type="text" onMyFunction="alert('hi');" />
如果不可能,请告诉它,我将其作为最佳答案进行检查。
PS:如果可行,该函数将被永久调用,并且在该函数中我会if
在开头放置一个。
我认为标题不是很适应,但我不知道该放什么。如果需要,请对其进行编辑。
我想要的很奇怪,但请不要投反对票。我想创建自己的函数,该函数将被这样调用:<input type="text" onMyFunction="alert('hi');" />
如果不可能,请告诉它,我将其作为最佳答案进行检查。
PS:如果可行,该函数将被永久调用,并且在该函数中我会if
在开头放置一个。
您可以使用纯 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/
如果我理解这一点,您希望在调用您的 javascript 函数时发生一些事情。为什么不把你想要发生的事情放在你的实际功能中呢?
<script type="javascript/text">
function MyFunction(){
// some code
alert('hi');
</script>
我不确定您所说的永久调用是什么意思,但在上面的代码中,每次调用您的函数时都会发生一个显示 hi 的警报,类似于您在问题中描述的内容,但使用不同的实现。
至于实际使用 onMyFunction="alert('hi')",我不相信这是可能的,因为 onClick、onload 和 onmouseover 事件是内置的。所以除非你编写正确实现 onMyFunction 的额外代码,否则我不会没有办法做到这一点。
您遇到的问题是浏览器没有意识到它是其中的一个功能。它是一个字符串,使它成为函数的唯一方法是将其分配为函数。
一种方法是在文档准备好或加载时,您在文档中查询具有该属性的元素并重新分配它。
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();
}
此代码使用并非所有浏览器都支持的querySelectorAll 。