Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jquery中对onfocus事件调用函数_Javascript_Jquery - Fatal编程技术网

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();
});