2014-01-08 98 views
2

我在關注this tutorial在jqueryui工具提示中顯示驗證錯誤。驗證工作正常,但我無法顯示正確的錯誤消息,因爲正確的屬性不能被有條件地鏈接到提示,按我下面的例子:如何在jqueryui工具提示中顯示jqueryui驗證錯誤信息

$(document).tooltip({ 
     items: ".input-validation-error", 
     content: function() { 

      //debugger; 
      return $(this).attr('data-val-required'); 
     } 
    }); 

只有將顯示必填字段錯誤信息通過這個邏輯,有沒有辦法通過點擊驗證結果來擴展這個邏輯(用於遠程和比較類型驗證),還是我遇到了死衚衕?

回答

4

由於content()函數是按需調用的,因此您可以根據this這個元素的屬性提供您需要的任何文本。

您需要檢查元素並返回發生驗證錯誤的文本。例如:

$(document).tooltip({ 
    items: ".input-validation-error", 
    content: function() { 

     //debugger; 
     return $(this).attr('data-val-required') || 
       $(this).attr('data-val-date') || 
       $(this).attr('data-val-number'); // etc etc 
    } 
}); 

這將返回填充了錯誤消息的數據驗證屬性。

+0

我仍然無法得到這個正常工作,因爲您的建議是修改返回,如下所示:return $(this).attr('data-val-remote')|| $(this).attr('data-val-required')|| $(this).attr('data-val-equalto');該短信似乎默認爲第一個選項。 – Purusartha

+0

好吧,我只是在瀏覽器中輸入內容,無法運行代碼。儘管有任何語法問題,但這個概念仍然非常重要。您可以檢查該元素並返回想要顯示的錯誤文本。 –

4

使用tutorial在原來的問題引用,變更線4從:

@{ Html.ValidateFor(m => m.UserName); } 

到:

@Html.ValidationMessageFor(m => m.Username, null, new {style="visibility:hidden"}) 

然後,如下修改內容功能:

$(document).tooltip({ 
    items: ".input-validation-error", 
    content: function() { 
     return $("[data-valmsg-for='" + $(this).attr('id') + "']").text(); 
    } 
}); 

實質上,我們不希望顯示原始的ValidationMessageFor範圍(可見性= h idden)。我們只是將它用作工具提示的容器。

+1

我使用了style =「display:none」而不是可見性屬性,因爲隱藏的元素佔用了表單中的空間,即使它的可見性被隱藏了,而顯示也沒有,它沒有佔用空間 – Yasmine

相關問題