3

実際、私の質問は別のものです。

以下のように、小さなボックス内のフォームの最初の要素の .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 関数は完全に呼び出されますが、tabIndexForm がこの関数を置き換えると思われるため、 somefunction() は機能しません。次のコードを更新して両方を機能させる方法。

         $(".tbox :input:visible:enabled:first").focus(function () {
            tabIndexForm();
         });

重要: tinybox.js で "somefunction()" を呼び出すことはできません。これはすべての小さなボックスに共通しているためです。

4

3 に答える 3

2

「フォーカス」関数は、イベント ハンドラーを要素に/バインド/します。

イベント ハンドラを/追加/する新しい「on」関数を試してください。

$(".tbox :input:visible:enabled:first").on('focus', function () {
        tabIndexForm();
});

EDIT最初の試行は機能しません。

それはうまくいくはずです:

$(".tbox").on('focus', ":input:visible:enabled:first", function () {
        tabIndexForm();
});

そうすれば、イベント ハンドラーは要素にアタッチされないため、古いものを上書きしません。

于 2012-11-02T09:42:24.010 に答える
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();
});

これは、ロジックを 1 か所に保持しているため、イベント ハンドラーを処理するためのより適切な方法でもあります。

于 2012-11-02T09:43:28.103 に答える
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();
});

このデモをチェックしてください:http://jsfiddle.net/8JbvY/

于 2012-11-02T09:40:27.890 に答える