jquery datepicker上的自定义动态验证在第二次焦点之前无效

时间:2012-08-01 16:33:14

标签: jquery validation datepicker

我有一个带有验证的日期选择器,弹出一条消息和“!”直到用户选择一个日期 - 它然后显示“O”代替“!”弹出窗口的一部分保留在屏幕上,表示您已完成此字段。

我遇到的问题是,在第二次将焦点放在datepicker文本字段之前,验证弹出窗口不会停留在屏幕上。

使用验证jquery这是很多代码,所以我真的不想在这里包含所有代码,但这里是jsfiddle

任何想法为什么它不是第一次运行但是随后会运行?

3 个答案:

答案 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:

http://jsfiddle.net/LeXHE/9/

然后出现了一些逻辑错误:

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);
}