1

我对以下情况有疑问。

我有一个 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()不是函数”。由于我进行了警报测试,我收到了第一个警报,然后没有任何错误。

任何人都可以解释一下吗?

谢谢

4

1 回答 1

0

您是否正确使用了扩展方法?... http://api.jquery.com/jQuery.extend/

于 2010-06-11T08:47:20.587 回答