1

電話する

element.focus();

element は type=button の HTMLInputElement です。しかし、ブラウザはボタンをクリックします! それはモジラとクロムにあります。

選択したボタンを強調表示し、クリック イベントを開始しないようにするにはどうすればよいですか?

4

2 に答える 2

1

なるほど、原因がわかりました。Enter キーの onkeydown イベントを処理していました。解決策は、e.preventDefault(); を使用することです。

function ConvertEnterToTab(s, e, numSkipElements) {
            var keyCode = e.keyCode || e.htmlEvent.keyCode;
            if (keyCode === 13) {
                var tabIndex = s.tabIndex || s.inputElement.tabIndex;
                if (numSkipElements == undefined) {
                    numSkipElements = 0;
                }

                var nextElement = FindNextElementByTabIndex(tabIndex + numSkipElements);
                if (nextElement != undefined) {
                    nextElement.focus();
                    return e.preventDefault ? e.preventDefault() : e.htmlEvent.preventDefault(); // this is the solution
                }
            }
        }

        function FindNextElementByTabIndex(currentTabIndex, maxTabIndex) {
            if (maxTabIndex == undefined) {
                maxTabIndex = 100;
            }

            var tempIndex = currentTabIndex + 1;
            while (!$('[tabindex='+ tempIndex+ ']')[0] || tempIndex === maxTabIndex) {
                tempIndex++;
            }

            return $('[tabindex=' + tempIndex + ']')[0];
        }
于 2012-09-25T14:22:28.193 に答える
1

いいえ.focus()、ボタンをクリックしないか、フォームを送信しません: http://jsbin.com/onirac/1/edit

それはまさにあなたが望むことをします。

于 2012-09-25T14:22:13.100 に答える