我有一个带有验证的日期选择器,弹出一条消息和“!”直到用户选择一个日期 - 它然后显示“O”代替“!”弹出窗口的一部分保留在屏幕上,表示您已完成此字段。
我遇到的问题是,在第二次将焦点放在datepicker文本字段之前,验证弹出窗口不会停留在屏幕上。
使用验证jquery这是很多代码,所以我真的不想在这里包含所有代码,但这里是jsfiddle
任何想法为什么它不是第一次运行但是随后会运行?
答案 0 :(得分:3)
在选择和验证日期之前,似乎正在调用blur()
。这是一个简单的解决方案:在选择有效日期时淡出“O”,而不是模糊。
<强> Working JSFiddle Demo 强>
答案 1 :(得分:1)
问题在于inputElementBlur(e)
功能。特别是你打电话
if (!$(e).attr("required") && ($(e).val() == ""
|| $(e).val() == $(e).attr("defaultValue"))) {
alert('sniarf!');
$(blurredElement).next("div.tooltipContainer").find("span.formValid").fadeOut(100);
}
我在那里添加了警报,因此您可以查看代码的行为。我看到,当您在验证逻辑中使用defaultValue
属性时,在设置值时实际上不会更新它。
答案 2 :(得分:0)
没有"defaultValue"
属性这样的东西。这是一个DOM属性。修复了在首次采摘后出现O:
然后出现了一些逻辑错误:
if (!$(e).attr("required") && ($(e).val() == "" || $(e).val() === $(e).prop("defaultValue"))) {
$(blurredElement).next("div.tooltipContainer").find("span.formValid").fadeOut(100);
}
我改为:
if (!$(e).attr("required") && $(e).val() == "") {
$(blurredElement).next("div.tooltipContainer").find("span.formValid").fadeOut(100);
}