2010-07-29 28 views
1

我希望有人遇到類似的東西。文本輸入文本觸發客戶端[必需的]錯誤消息。MVC客戶端驗證導致虛假錯誤

我有以下包括在主:

<script src="/Scripts/jquery-1.4.1.js" type="text/javascript"></script> 
<script src="/Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script> 
<script src="/Scripts/MicrosoftAjax.js" type="text/javascript"></script> 
<script src="/Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script> 
<script src="/Scripts/MicrosoftMvcAjax.debug.js" type="text/javascript"></script> 
<script src="/Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.validate.js" type="text/javascript"></script> 

以及在視圖中具有

<% Html.EnableClientValidation(); %> 

幾個可能的因素:

  • 形式是在一個局部視圖
  • 提交的文本從CKEditor的
  • 的CKEditor的隱藏 在頁面加載,然後顯示通過 jQuery的
  • 未來

我只是不確定是什麼原因造成的。

形式:

<form action="/Quote/Create/1" id="form0" method="post"><div class="validation-summary-valid" id="validationSummary"><ul><li style="display:none"></li> 

</ul></div> 
<fieldset> 
    <legend>Fields</legend> 
    <div class="editor-field"> 
     <input id="QuoteID" name="QuoteID" type="hidden" value="0" /> 
    </div> 
    <div class="editor-field"> 
     <input id="UserID" name="UserID" type="hidden" value="54cb0fde-649d-429c-8800-6bd9cc286d90" /> 
    </div> 

     <div class="editor-label"> 
     <label for="PageNumber">PageNumber</label> 
    </div> 
    <div class="editor-field"> 
     <input id="PageNumber" name="PageNumber" type="text" value="" /> 
     <span class="field-validation-valid" id="PageNumber_validationMessage"></span> 
    </div> 
    <div class="editor-label"> 

     <label for="QuoteText">QuoteText</label> 
    </div> 
    <div class="editor-field"> 
     <textarea cols="20" id="QuoteText" name="QuoteText" rows="2"> 
</textarea> 
     <span class="field-validation-valid" id="QuoteText_validationMessage"></span> 
    </div> 
    <div class="editor-field"> 
     <input id="BookID" name="BookID" type="hidden" value="1" /> 

    </div> 
    <div class="editor-field"> 
     <input id="DateCreated" name="DateCreated" type="hidden" value="7/28/2010 9:21:36 PM" /> 
    </div> 
    <p> 
     <input id="quoteSubmit" type="submit" value="Create" /> 
    </p> 
</fieldset> 
</form><script type="text/javascript"> 
//<![CDATA[ 
if (!window.mvcClientValidationMetadata) { window.mvcClientValidationMetadata = []; } 
window.mvcClientValidationMetadata.push({"Fields":[{"FieldName":"PageNumber","ReplaceValidationMessageContents":true,"ValidationMessageId":"PageNumber_validationMessage","ValidationRules":[{"ErrorMessage":"The field PageNumber must be a number.","ValidationParameters":{},"ValidationType":"number"}]},{"FieldName":"QuoteText","ReplaceValidationMessageContents":true,"ValidationMessageId":"QuoteText_validationMessage","ValidationRules":[{"ErrorMessage":"That quote is too long.","ValidationParameters":{"minimumLength":0,"maximumLength":500},"ValidationType":"stringLength"},{"ErrorMessage":"You didn\u0027t even enter a quote...","ValidationParameters":{},"ValidationType":"required"}]}],"FormId":"form0","ReplaceValidationSummary":false,"ValidationSummaryId":"validationSummary"}); 
//]]> 
</script> 

當我拿出

<% Html.EnableClientValidation(); %> 

服務器端驗證工作正常,並不會產生錯誤。

+0

請問您可以發表表格代碼嗎? – 2010-07-29 04:51:41

+0

已添加表單代碼。 – asfsadf 2010-07-29 05:03:15

+0

我有完全相同的問題...我無法在客戶端解決它。問題在於,CKeditor不會將編輯器的角色與在客戶端驗證之前進行驗證檢查的textarea同步。我試圖在模糊或forceBlur事件上同步,但這也不起作用....所以我最終只在服務器端進行了驗證。如果您有解決方案,請發佈。 :) – apolka 2010-07-29 07:25:53

回答

1

我想通了! ('#quoteSubmit')。click(function(){ CKEDITOR.instances ['QuoteText'] .updateElement(); });}};}};

Yeehaw。