Javascript 如何在jquery中对onfocus事件调用函数
事实上,我的问题有些不同 我调用了一个函数。焦点事件在我的小框中的第一个元素的形式,如下所示Javascript 如何在jquery中对onfocus事件调用函数,javascript,jquery,Javascript,Jquery,事实上,我的问题有些不同 我调用了一个函数。焦点事件在我的小框中的第一个元素的形式,如下所示 $(".tbox :input:visible:enabled:first").focus(function () { tabIndexForm(); }); 它工作得很好,但这正在替换我自己的函数,该函数在我手动设置的表单的第一个元素上调用onfocus事件。如何做到这一点。我的表格是: <form name="exampleform
$(".tbox :input:visible:enabled:first").focus(function () {
tabIndexForm();
});
它工作得很好,但这正在替换我自己的函数,该函数在我手动设置的表单的第一个元素上调用onfocus事件。如何做到这一点。我的表格是:
<form name="exampleform">
<input type="text" name="a" onfocus="somefunction();"/>
<input type="text" name="b"/>
</form>
重要提示:我无法在tinybox.js中调用“somefunction()”,因为这对于所有的小盒子都很常见。这应该可以:
var elem = $(".tbox :input:visible:enabled:first");
var oldFunc = elem[0].onfocus;
elem.focus(function () {
if(typeof oldFunc == 'function') oldFunc.call(elem[0]);
tabIndexForm();
});
检查此演示:将事件处理程序绑定到元素 尝试新的“on”函数,该函数/添加/一个事件处理程序
$(".tbox :input:visible:enabled:first").on('focus', function () {
tabIndexForm();
});
编辑第一次尝试无效
这应该更有效:
$(".tbox").on('focus', ":input:visible:enabled:first", function () {
tabIndexForm();
});
这样,事件处理程序就不会附加到元素,因此不会覆盖旧的事件处理程序。从元素中删除
onfocus
属性:
<form name="exampleform">
<input type="text" name="a"/>
<input type="text" name="b"/>
</form>
这也是处理事件处理程序的一种更简洁的方法,因为您将逻辑保持在一个位置。函数是正确的,可能您在做其他一些错误的事情。将开发工具与浏览器一起使用以查看它们。确保somefunction可访问,并尽可能显示定义它的位置此形式的
on()
会将处理程序绑定到事件,就像focus()
一样。我没有尝试过,我只是查看文档并注意到不同的措辞。我想附加tabIndexForm()在onfocus上不替换前面的命令,实际上我无法添加行$(“.tbox input[name='a']”);在tinybox.js中。这是不常见的ok@为什么不呢?这与其他事件处理程序有何不同?
<form name="exampleform">
<input type="text" name="a"/>
<input type="text" name="b"/>
</form>
$(".tbox input[name='a']").focus(somefunction);
$(".tbox :input:visible:enabled:first").focus(function () {
tabIndexForm();
});