1

私は、ASP.NET MVC プロジェクトで jquery 控えめな検証と共に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