我有一个带有这个 onclick 属性的元素:
onclick="ieDisabledBtn(); widgetPayTotalDue.show();"
我已经添加了第一个函数,如果合适的话,我不想执行第二个函数。我基本上需要为 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 的问题,我已经解决了几个变体,但我仍然在执行第二个函数。
我错过了什么?
我将让这些按钮分布在整个应用程序中,它们调用不同的框架模式,因此我希望能够在这些 onclicks 前面加上一个新功能,如果合适的话,它将阻止进一步的 onclick 功能执行。