2012-04-03 82 views
0

的ControlToValidate我用我的jQuery插件與asp.net自定義驗證的頁面:asp.net自定義驗證不具有屬性回發

<asp:TextBox ID="txtModel" runat="server" /> 
<asp:CustomValidator ID="modelValidator" Display="Static" ControlToValidate="txtModel" ClientValidationFunction="validateDetails" EnableClientScript="true" runat="server" Text="My Message" /> 

<script type="text/javascript"> 

function validateDetails(sender, args) { 
    var controltovalidate = $(sender).attr('controltovalidate'); 
    args.IsValid = $('#' + controltovalidate).data('MyPlugin').hasValidValue(); 
} 

    $(function() { 
     $('#<%=txtModel.ClientID %>').MyPlugin({ 
      validator: $('#<%=modelValidator.ClientID %>') //In order to execute validation check when values inserted 
     }); 
    }); 
</script> 

正如你所看到的,是除了驗證在執行回傳,我想在插件中執行驗證器,因此我在插件選項中傳遞了驗證器。
每當插件執行驗證(使用ValidatorValidate(options.validator.get(0));的validateDetails功能完美的作品。
的問題是後回來了。當我按下一個按鈕,使得回傳上var controltovalidate = $(sender).attr('controltovalidate');的validateDetails功能失敗,因爲發件人突然沒有。controltovalidate屬性,這是爲什麼我怎樣才能讓後上的功能的工作原理回到

+0

@mshsayem:不是。我使用此validateDetails函數僅適用於modelValidator驗證程序。 – Naor 2012-04-03 05:47:19

+0

如果它僅適用於一個驗證程序,爲什麼您會收到此續訂像那樣?只要'$(「#txtModel」)'應該可以,對不對?像'args.IsValid = $('#txtModel')。data('MyPlugin')。hasValidValue();'? – mshsayem 2012-04-03 05:48:16

+0

@mshsayem:你是對的,但我更喜歡validateDetails函數不依賴於元素ID。而且,validateDetails函數保留在不同的js文件中,因此我沒有渲染的txtModel元素的客戶端ID。 – Naor 2012-04-03 05:52:26

回答

0

@Naor:?嘗試調用按鈕單擊事件的jQuery函數,並驗證值

+0

我相信你不明白這個問題。 – Naor 2012-04-03 06:57:20