其实我的问题有所不同。
我在我的小方框中调用了表单第一个元素的.focus事件的函数,如下所示。
$(".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>
现在,当我打开小盒子时,tabIndexForm函数调用完美,但somefunction()不起作用,因为我认为tabIndexForm取代了这个函数。如何升级以下代码以兼顾两者。
$(".tbox :input:visible:enabled:first").focus(function () {
tabIndexForm();
});
重要提示:我不能在tinybox.js中调用“somefunction()”,因为这对所有小盒子来说都很常见。
答案 0 :(得分:2)
'focus'函数/将事件处理程序绑定到元素。
尝试新的'on'函数,/添加/一个事件处理程序。
$(".tbox :input:visible:enabled:first").on('focus', function () {
tabIndexForm();
});
编辑首次尝试无效。
这应该会更好:
$(".tbox").on('focus', ":input:visible:enabled:first", function () {
tabIndexForm();
});
这样,事件处理程序没有附加到元素,因此它不会覆盖旧元素。
答案 1 :(得分:1)
这应该有效:
var elem = $(".tbox :input:visible:enabled:first");
var oldFunc = elem[0].onfocus;
elem.focus(function () {
if(typeof oldFunc == 'function') oldFunc.call(elem[0]);
tabIndexForm();
});
答案 2 :(得分:1)
从元素中删除onfocus
属性:
<form name="exampleform">
<input type="text" name="a"/>
<input type="text" name="b"/>
</form>
将您的javascript更改为:
$(".tbox input[name='a']").focus(somefunction);
$(".tbox :input:visible:enabled:first").focus(function () {
tabIndexForm();
});
这也是处理事件处理程序的一种更简洁的方法,因为您将逻辑保存在一个位置。