Проверка jQuery - Проверьте, соответствует ли значение метке? - PullRequest
0 голосов
/ 30 сентября 2011

Я использую плагин jQuery Validation в форме, и мне было интересно, как проще всего проверить, совпадает ли значение ввода с меткой?

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

Что я хочу сделать, так это чтобы проверка завершилась неудачно, если форма отправлена ​​с неизменным значением ввода по умолчанию.

Есть идеи?

Спасибо!

Ответы [ 4 ]

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

Вы можете добавить пользовательский метод проверки (хотя необходимо проверить код): -

$.validator.addMethod("value_label_same", function(value, element) {
    var label = element.attr('label');
    return label == value
}, "* Label and Value should match");

и использовать его для проверки поля: -

value_label_same : true

Найти документациюздесь - http://docs.jquery.com/Plugins/Validation/Validator/addMethod#namemethodmessage

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

Этот ответ показывает, как создать пользовательское правило. Предполагая, что вы используете <label> s для своих элементов управления, вы сможете использовать селектор jQuery, например $("label[for=" + $(element).id + "]), чтобы получить метку, а затем сравнить текст со значением ввода.

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

Есть несколько способов добиться этого с помощью пользовательского метода проверки, я думаю, вам нужно сделать что-то вроде этого

Существует много способов получить текст метки

Я предполагаю, что вы хотите, чтобы проверка завершилась неудачно, если текст метки = значение

$(function (){
    jQuery.validator.addMethod(
        "doesnotmatchlabel",
        function(value, element) {
            var label = $(element).closest('div.elHolder').find('label').text();
            var result = ! label == value;
            return this.optional(element) || result;

        },
        "required"
    );

});

Кроме того, чтобы добавить этот метод к своим элементам, вы можете сделать это ...

    var textInputs= $('input:text');
    if ( textInputs.length ){
        textInputs.each(function (i,el){
            var jqEl = $(el);
            jqEl.rules( "add",
                {"doesnotmatchlabel": true}
            );
        })
    }
1 голос
/ 30 сентября 2011

Я не думаю, что вам нужен плагин для этого.

$("input").each(function() {

$(this).blur(function(){

     var labelvalue = $("label").text();
     var inputvalue = $(this).val();

        if(labelvalue === inputvalue) {

          console.log("we have a match");

        }

        else { console.log("no match") }


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