0

関数を作成しました:

function createValidatorForForm(id) {
    var formValidator = $(id).validate({
        errorClass:'help-inline',
        errorElement:'p',

        highlight:function (element, errorClass, validClass) {
            $(element.parentNode.parentNode).addClass('error')
        },
        unhighlight:function (element, errorClass, validClass) {
            $(element.parentNode.parentNode).removeClass('error')
        }
    });
    return formValidator;}

次に、次の方法でコードで使用します。

var reportValidator = createValidatorForForm("#report-form");
var areaValidator = createValidatorForForm("#area-form");
var liquidationValidator = createValidatorForForm("#liquidation-form");
var comparableValidator = createValidatorForForm("#comparable-form");

しかし、FirebugはformValidatorについて知っていて、デバッガーでその状態を確認できますが、reportValidatorと他の3つの変数が未定義であり、コードで使用できないことを警告します。reportValidator.form()はエラーを生成します。ただし、検証自体はすべてのフォームで機能します。

function saveReport() {
if (!comparableValidator.form()){return};
$.ajax({
    url : SAVE_REPORT, // + "?json=" + ko.toJSON(reportModel),
    data : {
        json : ko.toJSON(reportModel)
    }, ...
4

1 に答える 1

1

次のようにコードを変更します。

   reportValidator = createValidatorForForm("#report-form");
   areaValidator = createValidatorForForm("#area-form");
   liquidationValidator = createValidatorForForm("#liquidation-form");
   comparableValidator = createValidatorForForm("#comparable-form");    

現在reportValidatorおよびその他の変数はグローバルであり、onDocumentReadyコールバック関数の外部に表示されます。を置くvarと、変数をローカルにし、onDocumentReadyコールバック関数内でのみ使用できるようにします。

于 2013-01-25T09:07:05.067 に答える