2015-04-02 69 views
2

由於幾天我已經對我的頭撞,嘗試了所有想法(nooby或不),但似乎我無法得到它的工作。Html.ValidationMessageFor圖像和工具提示

我試圖歸檔的是: 而不是原始的驗證消息我想只顯示帶有jQuery工具提示的圖標。 此外,解決方案應易於維護......意味着在需要驗證的每個視圖上都可用。

我試過到目前爲止:

@Html.ValidationMessageFor(Function(m) m.Password, Nothing, New With {.class = "ValWarn"}) 

CSS:

.ValWarn {content: url(images/Warning.png);margin: 0.1em;} 

結果:image 1

問題:我不能指定確認消息,其標題。

測試#20357

<div id="divhiddenval" style="display: none;"> 
     @Html.ValidationMessageFor(Function(m) m.Password) 
    </div> 
    @Html.PasswordFor(Function(m) m.Password) 
    <div id="[email protected](Function(m) m.Password)" style="display: inline;"></div> 

的Javascript:

$(document).ready(function() { 
     fullValidation(); 
     $('form').submit(function() { 
      if (! $(this).valid()) { 
       fullValidation(); 
       return false; 
      } 
     }); 
      $('input').keydown(function() { 
       singleValidation(this.id); 
       tooltip(); 
      }); 

     }); 


     function singleValidation(_id) { 
      var _err = $("span[data-valmsg-for='" + _id + "']"); 

      if ($(_err).text() != "") { 
       $("#valdiv_" + $(_err).attr("data-valmsg-for")).html("<span class='ValWarn tooltip' title='<span class=&quot;warncolor&quot;>" + $(_err).text() + "</span>'></span>"); 

      } else { 
       $("#valdiv_" + $(_err).attr("data-valmsg-for")).html(""); 
      } 
     } 

     function fullValidation() { 
      $("#divhiddenval span[data-valmsg-for]").each(function() { 
       singleValidation($(this).attr("data-valmsg-for")); 
      }) 
      tooltip(); 
     } 

結果:shows tooltip on hover

問題:這是一種矯枉過正的來電提示()各一次。它也不能在第一次按鍵時使用。它在我移出輸入並再次移入輸入時起作用。所以按鍵不會開火,直到失去焦點一次。

下一次嘗試: 我在互聯網上的某個地方找到了ValidationHTMLMessageFor Extension。相當接近,但到目前爲止... 我的應用程序是全球化的,所以我將被迫在每個資源字符串之前添加圖像作爲dataanotations它只需要靜態字符串。此外,工具提示問題也不會得到解決。

因此,根本......我不能想到任何其他方法,將工作,因爲我想要它。 在另一方面,我不能相信,微軟則讓公司很難通過我們自己的:(

如果有人請能幫助我解決這個問題?

回答

0

行,所以問題的一部分,這裏是這種風格Validationmessages ValidateMessageFor返回一個包含你在模型中聲明的錯誤消息的span元素,而是嘗試使用ValidateFor。ValidateFor不會返回附加到模型的錯誤消息,但會發出驗證失敗的信息,您希望向用戶展示的通知的最佳人選。

確保您有客戶端validat離子和不顯眼的JavaScript中啓用您的web.config與正確的JavaScript文件包含在視圖中。

web。配置

<appSettings> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
</appSettings> 

的JavaScript

~/Scripts/jquery-1.7.1.min.js 
~/Scripts/jquery.validate.min.­js 
~/Scripts/jquery.validate.unob­trusive.min.js 

這裏有你想實現一個類似的使用一個體面的參考,但使用 ValidateFor

我忘了補充一點,方法我解釋會做驗證不顯眼,不必「提交」表格。您仍然可以提交使用ValidateFor檢舉您的驗證有錯誤,然後使用jQuery訪問輸入驗證錯誤類和數據val-屬性數據的錯誤消息的形式得到您想要的結果,以同樣的方式你提示。

+0

早上好,感謝您分享的鏈接。 兩個問題,我這個解決方案遇到的問題。 1.如果我有一個屬性的多個驗證規則?讓我們說它是必需的,也有一個數據val長度?該鏈接中描述的方法沒有趕上當前的錯誤。所以,如果我有3個長度設置了密碼,則提示仍然會顯示所需的錯誤,而不是長度誤差。 2.問題......這個人是最討​​厭...如果我不使用ValidationMessageFor的所有屬性我得到一個「unexcpected令牌U」從unonbstutive JS。最討厭的東西tbh – GeekByChoiCe 2015-04-03 05:43:25