我有一个带有此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的问题,我已经解决了几个变化,但我仍然执行第二个功能。
我错过了什么?
我将在这个应用程序中传播这些按钮,并且它们调用不同的框架模态,因此我希望能够使用新函数为这些onclick添加前缀,这将阻止进一步的onclick函数执行(如果适用)。 / p>
答案 0 :(得分:1)
如果你的onclick事件处理程序(ieDisabledBtn(); widgetPayTotalDue.show();
)中有两个语句,它们都会被调用。 onclick属性大致转换为:
function()
{
ieDisabledBtn();
widgetPayTotalDue.show();
}
因此,当您希望调用ieDisabledBtn()
时,您需要true
返回widgetPayTotalDue.show()
,这意味着:
function()
{
if(ieDisabledBtn())
{
widgetPayTotalDue.show();
}
}
或:
onclick="if(ieDisabledBtn()) widgetPayTotalDue.show()"
最好只有一个函数绑定到一个事件,为简单起见,如果你可以帮助它。然后,您可以使该功能执行您喜欢的任何操作并保持其可读性。