jquery.validate失败并显示“a is null”

时间:2011-11-14 20:27:43

标签: jquery jquery-validate

我有一个我一直在构建的ASP.NET MVC应用程序,我正在尝试验证单个字段。所以,我决定将jQuery.validate引入我的应用程序,所以如果我将来需要做更多的验证,我会包含插件。

进行一些测试,我补充道:

jQuery("#NextFollowUpDateTimePicker").rules("add", {
  minlength: 2
});

我的输入ID是“NextFollowUpDateTimePicker”,我甚至还没有尝试验证,但我只是想添加规则。当我用Firebug检查控制台时,我收到以下错误:

a is null

这是从我的jQuery文件(1.5.1)抛出的。有没有人碰到过这个?我有各种其他JS文件,所以我猜它是某种冲突,但我不确定如何调试它。

提前致谢! -Matt

2 个答案:

答案 0 :(得分:2)

确保在添加任何规则之前已调用$("#myForm").validate();。此外,如果要添加动态输入以进行验证,请确保在添加规则之前将它们添加到DOM中。

答案 1 :(得分:0)

不确定下面的代码是否会帮助某人,因为当我单击提交按钮以验证字段并执行AJAX调用时调用了JQuery验证器时,我确实遇到了不合适的行为。在我添加以下语句之前,验证无法按预期方式进行多次提交。看起来DOM提交时需要重置DOM,以避免任何浏览器刷新以使验证按预期进行。

$.data($(id)[0], 'validator', null);

JSP 文件,显示输入类型“提交”

<input type="submit" id="label.login.button" name="label.login.button"
       value="" class="btn btn-primary btn-xs btn-block">

JavaScript 执行验证并处理表单提交

 /**
 * 
 * @author dinesh.lomte
 */

/**
 * 
 */
$(document).ready(function() {
    reset('#loginForm');
    // Validating the login form on submit  
    validateLoginForm();
});

/**
 * 
 * @param id
 * @returns
 */
function reset(id) {    
    $.data($(id)[0], 'validator', null);
}

/**
 * 
 * @returns {undefined}
 */
function validateLoginForm() {
    // Validating the login form
    $('#loginForm').validate({
        rules: {
            userId:     {
                required:   true,
                userId:     true
            },
            password:   'required'
        },
        messages: {
            userId: {
                required: function() {
                    // Message: Please enter User ID.
                    return $.i18n('business.message.00001');
                },
                userId: function() {
                    // Message: Invalid character(s) found. Please enter valid characters.
                    return $.i18n('business.message.00003');
                }
            },
            password: {
                required: function() {
                    // Message: Please enter Password.
                    return $.i18n('business.message.00002');
                }
            }
        },
        submitHandler: function(form) {
            // Processing the login request
            processLoginRequest();
        }
    });
    return false;
}

/**
 * 
 * @returns
 */
function processLoginRequest() {
    // Building the json instance to process login request
    var formData = {'userId':$('#userId').val(),
                    'password':$('#password').val(),
                    'language':$('#language').val()
                    };
    $.ajax({
        type        :'POST',
        contentType :'application/json',
        url         :getContextPath() + '/login',
        data        :JSON.stringify(formData),
        dataType    :'json',
        beforeSend  :function() {
            $('#pleaseWaitModal').modal();
        },
        complete    :function() {
            $('#pleaseWaitModal').modal('hide'); 
        },
        success     :function(data) {
            // Validating ui message(s) for display
            if(hasUiMessages(JSON.stringify(data))) {
                return;
            }
            createHomeControllerForm(data);
            toggleComponents(true);
        },
        error       :function(exception) {
            // Message: Failed to process your request due to system 
            //          error. Please contact your system administrator.
            showI18nMessage('error', 'business.message.00005');
            toggleComponents(false);
        }
    });
}