1

我在 ASP.NET MVC 项目中使用 jquery Tipsy插件以及 jquery 不显眼的验证。我正在使用以下代码将 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>

有什么建议么?

4

0 回答 0