0

我有一个带有这个 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 功能执行。

4

1 回答 1

1

如果您的 onclick 事件处理程序 ( ieDisabledBtn(); widgetPayTotalDue.show();) 中有两个语句,它们都将被调用。onclick 属性大致翻译为:

function()
{
  ieDisabledBtn();
  widgetPayTotalDue.show();
}

所以你需要在你想被调用的时候ieDisabledBtn()返回,这意味着:truewidgetPayTotalDue.show()

function()
{
  if(ieDisabledBtn())
  {
    widgetPayTotalDue.show();
  }
}

或者:

onclick="if(ieDisabledBtn()) widgetPayTotalDue.show()"

为简单起见,最好只有一个函数绑定到一个事件,如果你能提供帮助的话。然后你可以让这个函数做任何你喜欢的事情并保持它的可读性。

于 2012-06-29T21:13:11.133 回答