我有一個日期選擇器與驗證彈出消息和「!」直到用戶選擇一個日期 - 它會顯示一個「O」代替「!」並且彈出窗口的一部分停留在屏幕上以顯示您已完成此字段。自定義動態驗證jquery datepicker不工作,直到第二個焦點
雖然我遇到的問題是驗證彈出窗口不會保留在屏幕上,直到第二次將焦點對準日期選擇器文本字段。
利用有效的jQuery這是相當多的代碼,所以我真的不希望在這裏包括它所有,但這裏有一個jsfiddle
任何想法,爲什麼它沒有運行第一次,但它是隨後的時間?
我有一個日期選擇器與驗證彈出消息和「!」直到用戶選擇一個日期 - 它會顯示一個「O」代替「!」並且彈出窗口的一部分停留在屏幕上以顯示您已完成此字段。自定義動態驗證jquery datepicker不工作,直到第二個焦點
雖然我遇到的問題是驗證彈出窗口不會保留在屏幕上,直到第二次將焦點對準日期選擇器文本字段。
利用有效的jQuery這是相當多的代碼,所以我真的不希望在這裏包括它所有,但這裏有一個jsfiddle
任何想法,爲什麼它沒有運行第一次,但它是隨後的時間?
看起來好像blur()
在挑選和驗證日期之前被調用。這是一個簡單的解決方案:在選擇有效日期時淡化「O」,而不是模糊。
問題在於你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
屬性,但在設置值時實際上並未更新它。
有沒有這樣的事情"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);
}
實際上模糊正確挑選如果你檢查元素,你會看到該元素填充了「O」字符。如果仔細觀察,當輸入元素具有某個值並且通知的元素innerHtml和css被相應地修改時,該元素始終可見 – Jaguar 2012-08-10 11:35:43