从ascx调用jquery函数不起作用

时间:2010-06-11 07:25:43

标签: asp.net jquery ascx webusercontrol

我遇到以下情况的问题。

我有一个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;
        }
    }
}
});

现在起初我在firebug中得到“Validate()不是函数”。自从我进行了警报测试后,我收到了第一个警报,然后没有任何错误。

任何人都能解释一下吗?

由于

1 个答案:

答案 0 :(得分:0)

您正在使用extend方法吗? ... http://api.jquery.com/jQuery.extend/