我遇到以下情況的問題。從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。因爲我做了這個警報測試,所以我得到了第一個警報,然後沒有任何錯誤。
任何人都可以點亮一下嗎?
謝謝
你可以發佈Validate()函數的完整代碼,也可以發佈你的html嗎?另外,當你調用$(「。submitBtn」)。我想這意味着你的應用程序中有幾個按鈕(.ascx上的Submit按鈕就是其中之一),它們有.submitBtn類? – 2010-06-11 07:54:14
我已經添加了整個驗證的代碼。 我有很多正在使用此驗證的按鈕,但是我發佈的腳本位於ascx中,其他按鈕正在使用中心Javascript。我試圖先使用此按鈕: 但是一個普通的html按鈕仍然會給出相同的問題: –
2010-06-11 08:49:42
我看到這行:validate($(this))多次出現,但沒有關聯的函數。是否有代碼缺失?你能夠在IE中設置一個斷點,然後執行擴展方法嗎? – 2010-06-11 12:29:12