0

この jquery.each() が IE 7 でどのように機能するかを理解しようとしています:

        var todosOsCampos = $(".validate_mail");

         jQuery.each(todosOsCampos, function(){
            //Verifica e-mail
            email = $(this).val();
            if(email!=''){
                er = /^[a-zA-Z0-9][a-zA-Z0-9\._-]+@([a-zA-Z0-9\._-]+\.)[a-zA-Z-0-9]{2}/;
                if(!er.exec(email)) {
                    erro = 1;
                    $(this).css("border", "solid 1px #F00");
                }   
            }
        });

メールをチェックしていますが、Ie7 では正しく動作していません

問題は解決したと思いましたが、間違っていました。user2246674 の例のようにコードを変更しました。

        var todosOsCampos = $(".validate_mail");

        todosOsCampos.each(function(){
            email = this.value;
            console.log(email);
            if(email!=''){
                er = /^[a-zA-Z0-9][a-zA-Z0-9\._-]+@([a-zA-Z0-9\._-]+\.)[a-zA-Z-0-9]{2}/;
                if(!er.exec(email)) {
                    erro = 1;
                    this.style.border = "solid 1px #F00";
                }   
            }
        });

しかし、IE7 は次のメッセージを返しています。

この Web ページに問題があると、正しく表示されない、または正しく機能しない可能性があります。将来...

そして、[詳細を表示] ボタンをクリックします。

Line: 528
Char: 5
Error: Object does not support this property or method

コード: 0

528行目はこれに対応

電子メール = this.value;

誰かが私を助けることができますか?

4

1 に答える 1

0

間違った「each」が使用されているため、コードが疑わしく、失敗する傾向があると考えています。(しかし、誰が知っているでしょうか。驚くべきことが起こる可能性があります。)

使用されているjQuery.each ($.each(array, ..))があります。

オブジェクトと配列の両方をシームレスに反復処理するために使用できる汎用イテレータ関数。

.each (例: ) を使用する必要があります。$(selector).each(..)

jQuery オブジェクトを繰り返し処理し、一致した要素ごとに関数を実行します。

この場合、次のようにjQuery オブジェクト.eachを反復処理するために使用します。

todosOsCampos.each(function(){ .. })

一致する 0 個以上の要素のコレクションである jQuery オブジェクトを常に返すことに注意してください$(selector)

使用法を修正した後も問題が解決しない場合は、投稿を更新して、警告/エラー メッセージなどの詳細を追加してください。

于 2013-09-20T20:51:45.400 に答える