2010-06-11 21 views
1

我遇到以下情況的問題。從ascx調用jquery函數不起作用

我有一個ascx,其中包含一個搜索條件的提交按鈕,我試圖在整個網站中使用的js文件中調用驗證函數(這是我第一次在ASCX)。

現在我只是嘗試這樣做:

<script type="text/javascript" src="js/jquery-1.3.2.js"></script> 
<script type="text/javascript" src="js/jsAdmin_Generic_SystemValidation.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".submitBtn").click(function (e) { 
      alert("test"); 
      alert($.Validate()); 
      alert("test 2"); 
     }); 
    }); 
</script> 

該文件被引用正確,因爲我已經看到螢火蟲職位,是由它來完成。

這是函數:

jQuery.extend({ 
Validate: function() { 
    var requiredElements = $('.required').length; // Get the number of elements with class required 

    $('.required').each(function() { 
     // If value of textbox is empty and have not 
     // yet been validated then validate all required 
     // elements. i.e. 
     if (($(this).val() == "") || ($(this).hasClass("validationError")) || ($(this).hasClass("validationAlert")) || ($(this).hasClass("validationOk") == false)) { 
      validate($(this)); 
     } 
    }); 

    if ($('.validationOk').length == requiredElements) { 
     return true; 
    } else { 
     return false; 
    } 
}, 
// Another extended function, this function 
// is used for pages with the edit-in-place 
// feature implemented. 
validateElement: function (obj) { 
    var elementId = obj.attr("id"); // id of the button clicked. 
    var flag = 0; 

    if (elementId.toLowerCase() == "paymentmethodid") { 
     // Case elementId = paymentMethodId then check all the 
     // elements with css class starting with openStorage 
     var requiredElements = $(document).find("input[class*='openStorage']").length; // Get the number of elements with css class starting with openStorage 

     // Loop through all the elements with css class containing 
     // openStorage abd validate each element. 
     $(document).find("input[class*='openStorage']").each(function() { 
      if (($(this).val() == "") || ($(this).hasClass("validationError")) || ($(this).hasClass("validationAlert"))) { 
       validate($(this)); 
      } 

      if ($(this).hasClass("validationOk")) { 
       flag++; 
      } else if (($(this).hasClass("validationError")) || ($(this).hasClass("validationAlert"))) { 
       flag--; 
      } 
     }); 

     // If all elements are valid return true else return false 
     if (flag == requiredElements) { 
      return true; 
     } else { 
      return false; 
     } 
    } else if (elementId.toLowerCase() == "registeredfortax") { 
     if (($('.TaxRegistrationNumber').val() == "") || ($('.TaxRegistrationNumber').hasClass("validationError")) || ($('.TaxRegistrationNumber').hasClass("validationAlert"))) { 
      validate($('.TaxRegistrationNumber')); 
     } 

     if ($('.TaxRegistrationNumber').hasClass("validationOk")) { 
      return true; 
     } else { 
      return false; 
     } 
    } else { 
     var elementClass = "." + elementId; 

     if (($(elementClass).val() == "") || ($(elementClass).hasClass("validationError")) || ($(elementClass).hasClass("validationAlert")) || ($(elementClass).hasClass("validationOk") == false)) { 
      validate($(elementClass)); 
     } 

     if ($(elementClass).hasClass("validationOk") && ($(elementClass).hasClass("required"))) { 
      return true; 
     } else if ($(elementClass).hasClass("required") == false) { 
      return true; 
     }else { 
      return false; 
     } 
    } 
} 
}); 

現在起初我是越來越「驗證()是不是一個函數」在Firebug。因爲我做了這個警報測試,所以我得到了第一個警報,然後沒有任何錯誤。

任何人都可以點亮一下嗎?

謝謝

+1

你可以發佈Validate()函數的完整代碼,也可以發佈你的html嗎?另外,當你調用$(「。submitBtn」)。我想這意味着你的應用程序中有幾個按鈕(.ascx上的Submit按鈕就是其中之一),它們有.submitBtn類? – 2010-06-11 07:54:14

+0

我已經添加了整個驗證的代碼。 我有很多正在使用此驗證的按鈕,但是我發佈的腳本位於ascx中,其他按鈕正在使用中心Javascript。我試圖先使用此按鈕: 但是一個普通的html按鈕仍然會給出相同的問題: 2010-06-11 08:49:42

+0

我看到這行:validate($(this))多次出現,但沒有關聯的函數。是否有代碼缺失?你能夠在IE中設置一個斷點,然後執行擴展方法嗎? – 2010-06-11 12:29:12

回答

0

您是否正確使用extend方法? ... http://api.jquery.com/jQuery.extend/

+0

我相信我。 – 2010-06-11 08:56:57

+0

啊是的。代碼塊之外有一些代碼。我已編輯它,以便它被包括在內。 – 2010-06-11 09:41:36