質問: rules[i + 1]; if (mailExceptionField.indexOf(/@xxx.com/) !== -1) return options.allrules.mailException.alertText; }, ``` 【jquery.validationEngine-ja.js】に追記 ---------------------------------- ``` "mailException": { "regex": "none", "alertText": "* xxx.comのメールアドレスはご利用になれません。" } ``` JavaScript初心者のため、もともとのソースを真似て自分で編集しています。 正直なところ細かい記述の意味をしっかり理解できていない状態です。 初歩的なところで間違えているかもしれず、お恥ずかしい限りですが、 アドバイスをいただけたらありがたいです。 よろしくお願いいたします。
回答: 間近のコードをまねてしまった為に、 ・引数のどれに何が渡されているのか を、よく理解せずに書かれたことが主な原因だと思います。 ■ jquery.validationEngine.js 1132行目の方 ``` _mailException: function(field, rules, i, options) { if (field.val().indexOf('@xxx.com') !== -1) return options.allrules.mailException.alertText; }, ``` やりたいことは、こんな感じだと思います。 並んでいる他の関数をよく確認すると、入力値の取得方法は、`field.val()`のようです。 また、`indexOf`の第一引数は文字列であるべきなので、スラッシュ`/`ではなく、シングルクォート`'`か、ダブルクォート`"`で囲いましょう。 なお、 ``` field.val().indexOf(/@xxx.com/) ``` のままでもエラーにはなりませんが、これは、 ``` field.val().indexOf('/@xxx.com/') ``` と書いたのと同じなので、比較文字列が違うものになっており、期待した結果を得られません。 余談となりますが。 もっと簡単なカスタマイズで同じチェックが出来そうでしたので、書いておきますね。 ■ jquery.validationEngine.js の追記は全て不要。 ■ jquery.validationEngine-ja.js ``` "mailException": { "regex": "^(?!.*xxx\.com).+$", "alertText": "* xxx.comのメールアドレスはご利用になれません。" } ``` 正規表現で、【`xxx.com`を含まない】という指定です。チェック結果は、同じになるはず。。。 コードは全て未検証につき、スペルミス・不具合等ありましたら、ご容赦を。。 以上、ご参考までに。