문제

I'm trying to add validation rules on a form that is dynamically populated, depending on a JSON response from a back-end. I'm using jQuery 1.9.1 and jQuery Validation plugin.

function getItems(Id) {
    $.ajax({
            url: ...
            success: function (items) {
                buildForm(items);
            }
            error: ...
}

function buildForm(items) {
    $form = $('#testForm');
    $form.empty();
    $.each(items, function(i, item) {

        $form.append('<input type="text"' +
        'id="' + item.Id + '"' +
        'name="' + item.Name + '"' +
        'value="' + item.Default + '"' +
        ' />');
        $form.append('<br />');

        $('#' + item.Id).rules("add", { required:true,email:true }) // error!
    });
}

jQuery(function ( $ ) {
    getItems(1 //just an Id);
});

Error: Uncaught TypeError: Cannot read property 'settings' of undefined

I'm new to JavaScript surely this is not the smartest way to go. HTML not reported, it's just an empty form. I think the DOM is not ready for the rules selection, but I really don't know how to handle this, 'cause I must use success callback and I'm not inside DOM ready function. Any suggestions are welcome!

도움이 되었습니까?

해결책

Where is .validate()?

You cannot call plugin method rules("add") until sometime after the plugin has been initialized with .validate().

다른 팁

I think the error is thrown from the validator plugin,

var settings = $.data(element.form, "validator").settings;

May be the 'id' is not referred properly.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top