我在 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>
有什么建议么?