私は、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>
助言がありますか?