2

jQuery 1.7とjQueryの検証1.9(この記事の時点ではそれぞれ最新)を使用しています。これはfirefox/chrome/safariで動作しますが、I.E。 (少なくとも8.0は、他のバージョンをテストしていない) - 取引が何であるかわからない。 例がここにあります: http://jsfiddle.net/bulbous/hZn5A/100/I.E.他のブラウザが行ったときに検証しない(jquery)

あなたがテストをクリックすると、テキスト入力コントロールがすべてのブラウザで検証されていますが、ドロップダウンはすなわちで検証されていません(ただし、他のすべてである)ことがわかります。 私も以下の例のための完全なHTMLを含むよ:あなたは<option>タグ明示的な「値」属性、それが動作を与える場合

<head> 
    <script src="jquery-1.7.js" type="text/javascript"></script> 
    <script src="jquery.validate-1.9.js" type="text/javascript"></script> 
</head> 
<body> 
<script type="text/javascript"> 
$(document).ready(function() { 
    jQuery.validator.addMethod("notEqual", function(value, element, param) { 
     return this.optional(element) || value != param; 
    }, "Please choose some value!"); 

    $('#myForm').validate({ 
     rules: { 
      text: { 
       required: true 
      }, 
      category: { 
       required: true, 
       notEqual: "---" 
      } 
     }, 
     messages: { 
      text: { 
       required: "Text required" 
      }, 
      category: { 
       required: "Category required" 
      } 
     } 
    }); 
}); 
    </script> 
<form id="myForm"> 
    <select id="category" name="category"> 
     <option>---</option> 
     <option>Category 1</option> 
     <option>Category 2</option> 
     <option>Category 3</option> 
    </select> 
    <input type="text" id="text" name="text" /> 
    <input type="submit" value="Test" /> 
</form 
</body> 
</html> 
+0

作品を動作する必要がありますね。 (「テスト」をクリックすると「値を選んでください」と表示されます) – Phrogz

+1

あのことをよく知っておいて、フィードバックに感謝します。 8も同様ですが、将来は明るいと聞いてうれしいです:) –

+0

ちょっと考えました。 Validationプラグインv1.9は、jQuery 1.6の最新バージョンです。おそらく、見てみるとjQuery 1.6.4を試してみるべきでしょう。 – Sparky

答えて

5

<option value='---'>---</option> 

IE7ではなくIE8で失敗する理由はわかりません。

4

バリデータのバグと思われます。しかし、回避策として、要素を選択して値を取得することを検討することがあります。これを見て、IE7で作業しています。

jQuery.validator.addMethod("notEqual", function(value, element, param) { 
    return this.optional(element) || $(element).val() !== param; 
}, "Please choose some value!"); 
+0

いいえ、element.item(element.selectedIndex).text!= param; あなたのソリューションははるかにクリーンです - 私は比較的jQueryを使用しています - 私はelement.val()を使ってみましたが、それは動作しませんでした、私は$(要素)を使用してjqueryしかし、それは理にかなっています。 –

2

オプションが値を持たないからです。

<option value='---'>---</option> 
    <option value='Category 1'>Category 1</option> 
    <option value='Category 2'>Category 2</option> 
    <option value='Category 3'>Category 3</option> 
1

あなたのidnameのために言葉 "テキスト" を使用しています。

言葉は "テキスト" とは、具体的に "予約" されていませんが、それはまた ...

http://www.kourbatov.com/faq/reserved.htm


"を避けるために、言葉のベスト" これらの一つだ、Validation pluginがありjQueryバージョン1.6.1までしかテストされていません

jQueryバージョンをダウングレードして、jQuery 1.7の問題を除外しました。

+0

チップのおかげで、私は確かに通常のコードで単語のテキストを使用することはありません - 一般的にテストの例でも - これは誰かがelses jsfiddleをforkすることから始めました:) - 私は以前のバージョンのjQueryを試しました、彼らも問題です - IEのように見えます他のブラウザとは多少異なるオプション値を扱います(IE 9より前) –

0

が、これはIE9で私のため

<html> 
<head> 
    <script src="jquery-1.7.js" type="text/javascript"></script> 
    <script src="jquery.validate-1.9.js" type="text/javascript"></script> 
</head> 
<body> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $('#myForm').validate({ 
     rules: { 
      text: { 
       required: true 
      }, 
      category: { 
       required: true 
      } 
     }, 
     messages: { 
      text: { 
       required: "Text required" 
      }, 
      category: { 
       required: "Category required" 
      } 
     } 
    }); 
}); 
    </script> 
<form id="myForm"> 
    <select id="category" name="category"> 
     <option value="">---</option> 
     <option value="Category 1">Category 1</option> 
     <option value="Category 2">Category 2</option> 
     <option value="Category 3">Category 3</option> 
    </select> 
    <input type="text" id="text" name="text" /> 
    <input type="submit" value="Test" /> 
</form 
</body> 
</html> 
関連する問題