3

メッセージと「!」でポップアップする検証付きの日付ピッカーがあります。ユーザーが日付を選択するまで、「!」の代わりに「O」が表示されます。ポップアップの一部が画面に残り、このフィールドを完了したことを示します。

私が抱えている問題は、datepicker テキスト フィールドに 2 回目のフォーカスを与えるまで、検証ポップアップが画面に表示されないことです。

検証 jquery を使用すると、非常に多くのコードになるため、ここにすべてを含めたくはありませんが、jsfiddleは次のとおりです。

初めて実行されていないが、それ以降は実行されている理由はありますか?

4

3 に答える 3

3

blur()日付が選択されて検証される前に呼び出されているように見えます。簡単な解決策は次のとおりです。ぼかしではなく、有効な日付が選択されたときに「O」をフェードインします。

ワーキング JSFiddle デモ

于 2012-08-06T21:42:35.563 に答える
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、値が設定されているときに実際に属性を更新しないことがわかります。

于 2012-08-10T11:25:53.217 に答える
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);
}
于 2012-08-13T10:23:59.287 に答える