2017-08-22 10 views
0

select2ドロップダウンでjQueryの検証を追加しようとしています。しかし、それは "nodeName undefined"のjavascript例外を引き起こし続け、何がうまくいかなかったのか分かりません。select2でjQueryの検証でnodeNameのプロパティを読み取ることができません

$(".field-validation-required").each(function() { 

    // output SELECT, if current html class is a select2 dropdown. 
    console.log(this.nodeName); 

    $(this).rules('add', { 
     required: true, 
     messages: { 
      required: "This field is required" 
     } 
    }); 
}); 

マイSELECT2のドロップダウンメニューは、クラスの選択図】図検証-必要 'が含まれていると私はそれにいくつかのjQueryの検証を適用しようとしています。しかし、$(これ)は常に "ノード名未定義のプロパティを読み取れません"というエラーを引き起こすようです。

+0

私たちに関連するHTMLマークアップを表示します。さもなければ、あなたのエラーを複製することはできません。 – Sparky

答えて

1

私のselect2ドロップダウンリストには、クラス.field-validation-requiredが含まれています。私はいくつかのjQuery検証を適用しようとしています。しかし、$(this)は常にそのエラー"Cannot read property of nodeName undefined"エラーを引き起こすようです。

関連するHTMLマークアップを表示してください。さもなければ、あなたのエラーを複製することはできません。


selectがユニークnameが含まれていますか?これはプラグインによって義務付けられており、紛失または重複したnameがエラーメッセージの根本原因になる可能性があります。元select要素にしたり、動的に作成Selectセレクト要素であなたの.field-validation-requiredクラスは


ですか?

要素がselectの場合は動作するはずです。それがSelect2要素にある場合、それは動作しません。

あなただけselecttextarea、特定のinput、およびcontenteditable要素...他には何にjQueryの検証を適用することができます。

Select2要素の代わりに元の隠しファイルselectをターゲットにします。プラグインは隠された要素をすべて無視するので、隠したselect要素を無視しない何らかのjQueryセレクタにignoreオプションを設定する必要があります。たとえば、ignore: []は、プラグインに何も無視し、すべての隠し要素を検証するように指示します。


代わりに、クラスやHTML5属性で元select要素にrequiredルールを適用することができます。上記のように、ignoreオプションを設定する必要があります。

<select name="myselect" class="required" .... 

または

<select name="myselect" required="required" .... 
+1

ええ、最終的に、この例外の根本的な原因は、 ".field-validation-required"クラスを含むdivがあり、例外を発生させたコードを検証しようとしていたためです。 – zihaow

関連する問題