Как нацелить ввод с помощью плагина jQuery Validate без использования атрибута name? - PullRequest
0 голосов
/ 21 октября 2011

Я использую популярный плагин проверки jQuery: Проверка

Как многие знают, этот плагин прекрасно работает и хорошо продуман. Однако я использую приложение asp.net, которое автоматически генерирует атрибуты имени для всех моих полей ввода. Кроме того, генерируемые им имена, по-видимому, недопустимы для использования в плагине jquery.

Мне интересно, есть ли другой способ нацеливания на элементы ввода с помощью этого плагина, или атрибут name является единственным способом.

    <script>
jQuery.validator.messages.required = "";
    $(document).ready(function () {
        $('#form1').validate({
        debug: true;
        invalidHandler: function(e, validator) {
            var errors = validator.numberOfInvalids();
            if (errors) {
                var message = errors == 1
                    ? 'You missed 1 field. It has been highlighted below'
                    : 'You missed ' + errors + ' fields.  They have been highlighted below';
                $("div.error span").html(message);
                $("div.error").show();
            } else {
                $("div.error").hide();
            }
        },

            rules: {
                <%=firstName.UniqueID%>: {
                    required: true,
                    minlength: 6,
                },
                email: {
                    required: true,
                    email: true,
                },
                password: {
                    required: true,
                    minlength: 6,
                },
                verify:{
                    required: true,
                    equalTo: "#password",
                }


            }
        });
    });

</script>

Я попытался заменить имя вызовом свойства на стороне сервера (показанного в «firstName»), которое правильно возвращает имя. Но jquery не работает на этом этапе, поэтому я предполагаю, что сгенерированное имя недопустимо, так как в нем есть «$».

Вынесено:

    <script>

jQuery.validator.messages.required = "";

    $(document).ready(function () {

        $('#form1').validate({

        debug: true;

        invalidHandler: function(e, validator) {

            var errors = validator.numberOfInvalids();

            if (errors) {

                var message = errors == 1

                    ? 'You missed 1 field. It has been highlighted below'

                    : 'You missed ' + errors + ' fields.  They have been highlighted below';

                $("div.error span").html(message);

                $("div.error").show();

            } else {

                $("div.error").hide();

            }

        },



            rules: {

                ctl00$ContentPlaceHolderBody$firstName: {

                    required: true,

                    minlength: 6,

                },

                email: {

                    required: true,

                    email: true,

                },

                password: {

                    required: true,

                    minlength: 6,

                },

                verify:{

                    required: true,

                    equalTo: "#password",

                }





            }

        });

    });



</script>

И HTML:

<label>Name</label>

<input name="ctl00$ContentPlaceHolderBody$firstName" type="text" id="firstName" /><br />



<label>Email</label>

<input name="ctl00$ContentPlaceHolderBody$ctl00" type="text" /><br />



<label>Password</label>

<input name="ctl00$ContentPlaceHolderBody$password" type="text" id="password" /><br />



<label>Verify Password</label>

<input name="ctl00$ContentPlaceHolderBody$verify" type="text" id="verify" /><br />



<input type="submit" name="ctl00$ContentPlaceHolderBody$submit" value="Submit" id="submit" />

1 Ответ

1 голос
/ 21 октября 2011

В документах говорится, что любое имя с недопустимыми идентификаторами JavaScript необходимо заключать в кавычки при установке параметров правил.Вот ссылка: http://docs.jquery.com/Plugins/Validation/Reference#Fields_with_complex_names_.28brackets.2C_dots.29

Я не уверен, хотя, будет ли он работать с символом $, но, возможно, стоит попробовать, если вы этого еще не сделали.

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