jQuery tipsy插件在IE上导致奇怪的选择元素行为

时间:2012-11-30 20:56:58

标签: jquery tipsy

我在ASP.NET MVC项目中使用jquery tipsy插件和jquery unobtrusive验证。我正在使用以下代码将Tipsy连接到验证代码:

$(function () {

    var options = {
        fade: true,
        trigger: 'focus',
        gravity: 's',
        opacity: 1,
        offset: 8
    };

    var validator = $('form').data('validator');

    if (validator) {

        // handle plugin events
        validator.settings.success = function () { }
        validator.settings.errorPlacement = function (errorElement, inputElement) {
            errorElement.hide();
            inputElement.attr('title', errorElement.text());
            inputElement.tipsy(options);
        }

        // handle cases where validation messages are 
        // provided by server side code via postback
        $('.input-validation-error').each(function (index, element) {
            element = $(element);
            sibling = element.siblings('.field-validation-error');

            if (sibling.length > 0) {
                element.attr('title', sibling.text());
                element.tipsy(options);
                sibling.hide();
            }
        });
    }
});

这一切都很棒。但是,在IE(至少7-9)中,当我单击应用了工具提示的下拉菜单时,会出现下拉菜单,然后立即消失。如果我单击并按住鼠标按钮,我可以滚动下拉菜单,但是一旦我松开,菜单就会消失。这不是预期的行为,也没有其他浏览器这样做。

作为参考,下拉列表的HTML代码非常标准:

<li>
    @Html.LabelFor(x => x.BirthYear)
    <div class="field">

        @Html.DropDownListFor(x => x.BirthMonth, new SelectList(
            Enumerable.Range(1, 12).Select(x=>x.ToString("00"))), 
            Html.GetString("Label_Month").ToString())

        @Html.DropDownListFor(x => x.BirthYear, new SelectList(
            Enumerable.Range(1901, 112).Select(x=>x.ToString("0000"))), 
            Html.GetString("Label_Year").ToString())                    

        @Html.ValidationMessageFor(x => x.BirthYear)
    </div>
</li>

有什么建议吗?

0 个答案:

没有答案