この onclick 属性を持つ要素があります。
onclick="ieDisabledBtn(); widgetPayTotalDue.show();"
最初の関数を追加しましたが、必要に応じて 2 番目の関数を実行したくありません。基本的に、IE 用にいくつか微調整する必要があります (読み取り専用にすることで無効化されたボタンを偽造しますが、クリック可能にはしません)。IE は無効化されたボタンのテキストに対して灰色のテキストをレンダリングするため、無効化されたボタンを使用できません。無効化されたボタンを使用できません。
ここでは、IE の偽の無効化ボタンを設定しています。
(function() {
var $disabled_btns = $('button[disabled]');
if ($disabled_btns && $.browser.msie) {
$disabled_btns.each(function() {
$(this)
.removeAttr('disabled')
.attr({
'readonly': 'readonly',
'disabledIE': true //set a flag, used in ieDisabledBtn()
})
.click(function() {
$(this)
.removeClass('ui-state-focus') //don't want this button style
.find('span').css({ //need to shift text so it stays in same position
'position': 'relative',
'top': '-1px;',
'left': '1px;'
});
return false;
}); //end click
}); //end each
} //end if
})();
ここに私の ieDisabledBtn 関数があります:
function ieDisabledBtn(e) {
//we only care about IE
if ($.browser.msie){
var e = window.event,
btn = e.srcElement;
//yes, we're a disabled IE btn, stop any other onclick events bound to this btn from firing
if (btn.getAttribute('disabledIE')) {
e.returnValue = false;
e.cancelBubble = true;
return false;
}
}
}
確かに e.returnValue = false を設定するだけの問題だと思いました。いくつかのバリエーションを試しましたが、まだ2番目の関数が実行されています。
私は何が欠けていますか?
これらのボタンをこのアプリ全体に広げ、さまざまなフレームワーク モーダルを呼び出すので、これらの onclick の前に新しい関数を追加して、必要に応じて onclick 関数の実行を停止できるようにしたいと考えています。