2012-04-23 95 views
1

我遇到了jQuery驗證未在IE8中觸發的問題。所有其他瀏覽器都能正常工作。jQuery驗證和IE8

我創建這裏砍下例如:

http://www.gilkes.me.uk/jqueryvalidation/index.html

你可以看到,在IE9,火狐等,如果按鈕按下任一複選框取消選中顯示工具提示驗證消息。

在IE8中,不執行驗證。爲什麼是這樣?

形式標記:

<form action="http://www.google.com" method="post"> 
<div style="margin-top: 50px; text-align: left; margin-left: 30px;"> 
    <ul> 
     <li style="list-style: none;"> 
      <input class="checkbox" data-val="true" data-val-checkboxtrue="You must tick the box indicated." data-val-required="The QuestionAccepted field is required." id="Questions_0__QuestionAccepted" name="Questions[0].QuestionAccepted" type="checkbox" value="true" /><input name="Questions[0].QuestionAccepted" type="hidden" value="false" /> 
      <strong>Question 1.</strong> 
      <input id="Questions_0__QuestionText" name="Questions[0].QuestionText" type="hidden" value="That you have been a United Kingdom resident for at least 6 out of the last 12 months." /> 
      <input id="Questions_0__ValidationMessage" name="Questions[0].ValidationMessage" type="hidden" value="Please confirm that you have read and understood " /> 
      <span class="field-validation-valid" data-valmsg-for="Questions[0].QuestionAccepted" data-valmsg-replace="true"></span></li> 
     <li style="list-style: none; margin-top: 30px;"> 
      <input class="checkbox" data-val="true" data-val-checkboxtrue="You must tick the box indicated." data-val-required="The QuestionAccepted field is required." id="Questions_1__QuestionAccepted" name="Questions[1].QuestionAccepted" type="checkbox" value="true" /><input name="Questions[1].QuestionAccepted" type="hidden" value="false" /> 
      <strong>Question 2.</strong> 
      <input id="Questions_1__QuestionText" name="Questions[1].QuestionText" type="hidden" value="That you are aged 74 or under." /> 
      <input id="Questions_1__ValidationMessage" name="Questions[1].ValidationMessage" type="hidden" value="That you are aged 74 or under." /> 
      <span class="field-validation-valid" data-valmsg-for="Questions[1].QuestionAccepted" data-valmsg-replace="true"></span></li> 
    </ul> 
    <p style="margin-top: 30px;"> 
     <button type="submit" id="Continue" class="button-continue"> 
      Buy Now 
     </button> 
    </p> 
</div> 
</form> 

我覺得有可能是這個劇本的問題。在這個東西沒有用IE8 orrectly工作:

<script type="text/javascript"> 
    jQuery.validator.unobtrusive.adapters.add("checkboxtrue", function (options) { 
     if (options.element.tagName.toUpperCase() == "INPUT" && options.element.type.toUpperCase() == "CHECKBOX") { 
      options.rules["required"] = true; 
      if (options.message) { 
       options.messages["required"] = options.message; 
      } 
     } 
    }); 
</script> 
+0

對不起。現在添加了相關的代碼。 – FloatLeft 2012-04-23 13:01:41

回答

1

這個問題是固定使用jQuery驗證的1.9版本爲我所用的版本(1.6)不使用jQuery的最新版本兼容:

jQuery Validation not working in IE7 + IE8

其實我讀了這個問題但沒有想到它適用於我,因爲我確信我正在使用jQuery 1.9的版本驗證

0

我還沒有發現任何錯誤顯示在提交的IE瀏覽器,所以我猜第一if聲明沒有返回true。您是否嘗試過使用alert()來檢查在IE8中有什麼值options.element.tagNameoptions.element.type

+0

嗨,馬丁,是的,我已經檢查過,如果說明是返回true。 – FloatLeft 2012-04-23 13:19:17

+0

啊!剛剛意識到我正在使用jQuery驗證的1.6版本,它與最新版本的jQuery不兼容 – FloatLeft 2012-04-23 13:34:41