JQuery проверить элементы, которые еще не созданы - PullRequest
6 голосов
/ 23 марта 2009

Мне интересно, возможно ли, чтобы плагин jQuery Validator проверял элементы, которые еще не существуют в dom, когда правила изначально установлены.

Вызов метода .Rules ("add", therules) только присоединяет правила к элементам, которые в данный момент существуют в dom. Если бы я должен был создать некоторые. Проверка не срабатывает. Есть мысли?

Домашняя страница валидатора, который я использую: http://bassistance.de/jquery-plugins/jquery-plugin-validation/

Новые элементы создаются с помощью http://ejohn.org/blog/javascript-micro-templating/

По сути, есть вызов ajax, и сервер возвращает группу json (ajaj?), Этот json передается через шаблонизатор resig. Пример шаблона выглядит так:

<script type="text/html" id="ProductsTemplateEdit">
    <td>
        <input type="hidden" value="<#= item.ID #>" id="Edit.ID" name="Edit.ID" />
        <input type="text" value="<#= item.Price#>" id="Edit.Price" name="Edit.Price" />
    </td>
</script>

Значения, очевидно, заполняются через json, который передается.

Я должен также упомянуть, что я использую платформу проверки xval, которая автоматически генерирует для меня правила проверки jquery: http://blog.codeville.net/2009/01/10/xval-a-validation-framework-for-aspnet-mvc/

Ответы [ 4 ]

2 голосов
/ 23 марта 2009

Хорошо, попробуй два. Что добавляет ваши элементы динамически? Разве вы не можете просто поместить .Rules («добавить»,) в тот же код?

2 голосов
/ 16 сентября 2010

Эй, не уверен, что это не вежливый взлом, но у меня это сработало. До этого я выполнял метод each () для селектора и сталкивался с той же проблемой, что и у вас, с недавно созданными элементами Ajaxed.

Событие при наведении курсора вживую, похоже, добилось цели, если вы не с ума сошли от своего css:

// >>> MSG/Comment form validator, now and forever...  
    $('form.streamForms').live('mouseover', function(){
        $(this).validate({
            rules: {
                text: "required"

            },
            messages: {
                text: " "
            }
        });    
    });

Надеюсь, это поможет!

0 голосов
/ 30 сентября 2011

Вот как я справился с этим. Сначала я создал свой объект проверки.


    var myvalidations = {};
    myvalidation.registerform = function() { $("#registerform").validate({
            submitHandler: function(form) {
                $(form).ajaxSubmit(optionspersonal); 
                //submitReg();
            },
                    rules: {
                firstname: {
                     required: true,
                     minlength: 5,
                     maxlenght: 22
                },
                    messages: {
                             firstname: {
                                 required: "Tell us what to call you by.",
                     minlength: "Your username must consist of at least 5 characters"
                             }
                     }
             });
        }

Теперь, всякий раз, когда вы создаете свою форму, убедитесь, что на ней есть идентификатор или какая-то ссылка на нее, и просто вызывайте вашу функцию сразу после ее создания.


    //create my content
    $('.content').html('--fields etc--');
    //add validation
    myvalidation.registerform();

Любые дальнейшие предложения приветствуются; но я думаю, что в основном это правильный подход.

0 голосов
/ 23 марта 2009

Вам захочется посмотреть на новые jQuery 1.3 Live Events

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...