0

.slideUp()/.slideDown() で非表示/表示される div に分割してページ分割されたフォーム (ユーザー登録用) があります。それはすべてうまくいきますが、サーバー側の検証から返されるエラーの数を減らすために、次のページに進む前に各ページを JavaScript で検証したいと考えています。現在、onblur を検証するように設定しています。「次へ」ボタンがクリックされたときにすべての要素をチェックするには、.blur() を使用して各入力を強制的に検証したいのですが、エラーが発生します。私の onblur 関数の例は次のとおりです。

var validateEmpty = function() {
    var $src = $('.registrationPage #' + event.srcElement.id);
    validate($src, "Can't be left empty!", checkEmptyRequired);
}

onblur関数に属性を設定することでバインドされています。

validate は、jQuery オブジェクト、エラー メッセージ、およびブール値を返す関数を受け取る関数です。私が得るエラーは

TypeError: Cannot read property 'srcElement' of undefined

したがって、.blur() が JavaScript イベントをトリガーせず、単に onblur 関数を呼び出すことは明らかです。ぼやけた要素の id を取得するにはどうすればよいですか?

4

1 に答える 1

1

関数がどのように呼び出されるかを示していませんが、おそらくイベントをパラメーターとして渡す必要があります。そうしないと、一部のブラウザーでは未定義になります (ただし、IE ではそうではありません)。

var validateEmpty = function(event) {
    var $src = $('.registrationPage #' + event.target.id);
    validate($src, "Can't be left empty!", checkEmptyRequired);
}

それは次のようなもので動作します:

$('.elements').on('blur', validateEmpty);

また、srcElementめったに使用されません (IE 固有です) target

var target = event.target || event.srcElement;

あなたのコードは Internet Explorer でのみ動作するように書かれているようですか?

于 2013-07-19T19:45:37.607 に答える