У меня возникла проблема со следующей ситуацией.Вызов функции jquery из ascx не работает
У меня есть 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>
Файл на который ссылается правильно, как я уже видел сообщения в Firebug, которые сделаны им.
Это функция:
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;
}
}
}
});
Теперь я сначала получал "Validate() не является функцией" в Firebug. Поскольку я тестировал это оповещение, я получаю первое предупреждение, а затем ничего, без ошибок.
Может ли кто-нибудь пролить свет?
Thanks
Не могли бы вы выслать полный код функции Validate(), а также ваш html? Кроме того, когда вы вызываете $ (". SubmitBtn"). Я предполагаю, что это означает, что у вас есть несколько кнопок во всем приложении (кнопка Submit на вашем .ascx является одним из них), которые имеют класс .submitBtn? –
Я добавил код всей проверки. У меня есть много кнопок, которые используют эту проверку, но этот скрипт, который я разместил, находится в ascx, другие кнопки используют центральный Javascript. Я пытался сначала использовать эту кнопку: Но регулярная кнопка html по-прежнему выдает те же проблемы: –
Я вижу эту строку: validate ($ (this)) появляется несколько раз, но не имеет связанной функции. Не хватает кода? Можете ли вы установить точку останова в IE и выполнить выполнение в методе расширения? –