2

我有一個使用jQuery 1.7和jQuery驗證1.9(本文最新的每一個),它在firefox/chrome/safari上工作,但只能部分在I.E上工作。 (至少8.0,還沒有測試過其他版本) - 不確定交易是什麼。 這裏有一個例子: http://jsfiddle.net/bulbous/hZn5A/100/什麼導致I.E.在其他瀏覽器不驗證(jQuery)

如果您單擊測試,可以看到文本輸入控制是在所有的瀏覽器驗證,但下拉列表中沒有,即驗證(但在所有其他)。 我包括完整的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() { 
    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

對我的作品在IE9。 (點擊「測試」顯示「請選擇一些價值!」) – Phrogz

+1

啊,這很好,知道,謝謝你的反饋 - 我必須讓它在I.E工作。 8以及,但很高興聽到未來更光明:) –

+0

只是一個想法。驗證插件v1.9僅針對jQuery 1.6的最新版本。也許你應該試試看jQuery 1.6.4。 – Sparky

回答

5

如果你給<option>標籤明確的「價值」的屬性,它的工作原理。

<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

感謝您的提示 - 我絕對不會在常規代碼中使用單詞文本,或者通常甚至在測試示例中使用這個詞 - 這個通過分派別人開始jsfiddle :) - 我嘗試了早期版本的jQuery btw,而且他們也是一個問題 - 看起來像IE處理選項的價值的東西有點不同於其他瀏覽器(無論如何IE 9以前) –

0

想這應該工作

<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> 
相關問題