2014-12-03 3 views
0

Я использую require _from_group i n my для проверки, но он не работает.jQuery validate require_from_group не работает

Мой код сценария ЗДЕСЬ:

jQuery.validator.setDefaults ({ отлаживать: правда, $ (документ) .ready (функция() {

jQuery.validator.setDefaults({ 
    debug: true, 
    success: "valid" 
}); 

$("#findproject_form").validate({ 
    rules: { 
     Profession: { 
      require_from_group: [1, ".validategroup"] 
     }, 
     Location1: { 
      require_from_group: [1, ".validategroup"] 
     }, 
     Company: { 
      require_from_group: [1, ".validategroup"] 
     }, 
     Name: { 
      require_from_group: [1, ".validategroup"] 
     }, 
     KeyWord: { 
      require_from_group: [1, ".validategroup"] 
     } 
    } 
}); 

$.validator.addMethod("require_from_group", function (value, element, options) { 
    var $fields = $(options[1], element.form), 
     $fieldsFirst = $fields.eq(0), 
     validator = $fieldsFirst.data("valid_req_grp") ? $fieldsFirst.data("valid_req_grp") : $.extend({}, this), 
     isValid = $fields.filter(function() { 
      return validator.elementValue(this); 
     }).length >= options[0]; 

    // Store the cloned validator for future validation 
    $fieldsFirst.data("valid_req_grp", validator); 

    // If element isn't being validated, run each require_from_group field's validation rules 
    if (!$(element).data("being_validated")) { 
     $fields.data("being_validated", true); 
     $fields.each(function() { 
      validator.element(this); 
     }); 
     $fields.data("being_validated", false); 
    } 
    return isValid; 
}, $.validator.format("Please fill at least {0} of these fields.")); 

});

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

МОЯ ФОРМА ЗДЕСЬ

<form id="findproject_form" method="post" action="{$BASE_URL}findproject" > 
     <div class="bgtrans"><h3>Search By</h3> 
     <div class="div_bg1"> 
     <div class="searchbg"><div class="seachbginputbg"><input class="seachbginput validategroup" type="text" placeholder="Profession" id="Profession" name="Profession" value="{if $profession}{$profession|escape}{/if}" /></div></div> 
     <div class="searchbg"><div class="seachbginputbg"><input class="seachbginput validategroup" type="text" placeholder="Location" id="Location1" name="Location1" value="{if $location}{$location|escape}{/if}" /></div></div> 
     <div class="searchbg" style="margin-right:0px;"> 
     <div class="seachbginputbg"><input class="seachbginput validategroup" type="text" placeholder="Company" id="Company" name="Company" value="{if $company}{$company|escape}{/if}"/></div> 

     </div> 

     <div class="clear"></div> 
     </div> 
     <div class="div_bg2"> 
     <div class="searchbg"><div class="seachbginputbg"><input class="seachbginput validategroup" type="text" placeholder="Name" id="Name" name="Name" value="{if $name}{$name|escape}{/if}" /></div></div> 
     <div class="searchbg"><div class="seachbginputbg"><input class="seachbginput validategroup" type="text" placeholder="Key Words" id="KeyWord" name="KeyWord" value="{if $keyword}{$keyword|escape}{/if}"/></div></div> 
     <div class="searchbg" style="margin-right:0px;"> 
     <input class="bgbttn" type="submit" name="submit" value="" /> 
     </div> 
     <div class="clear"></div> 
     </div>    
     </div> 

+0

Не нужно добавить метод, прежде чем пытаться утвердить против него? – rjdown

+0

Если я удаляю его, возникает ошибка: при проверке элемента Location1 проверяется исключение: проверить метод «require_from_group» –

+0

Это ** не ** функция 'require_from_group' ... [это всего лишь образец кода из документации' addMethod'] (http : //jqueryvalidation.org/jQuery.validator.addMethod/). – Sparky

ответ

1

Удалить пользовательский метод.(Это делает поле обязательным и это сравнение стоимости вашего поля на сумму ваших параметров. Поскольку ваши параметры число 1 и имя класса, ясно, что это не имеет никакого смысла.) ...

jQuery.validator.addMethod("require_from_group", function(value, element, params) { 
    return this.optional(element) || value == params[0] + params[1]; 
}, jQuery.validator.format("Please fill out atleast one field ")); 

Это не имеет смысла, потому что это не действительно функция require_from_group ... that's just some sample code from the .addMethod() documentation с именем, измененным на "require_from_group".


Используйте версию по умолчанию require_from_group метода/правила включены в the additional-methods.js file. Вы можете включить весь файл или скопировать один из методов ниже.

Как вы можете видеть, это не тривиальная функция.

$.validator.addMethod("require_from_group", function(value, element, options) { 
    var $fields = $(options[1], element.form), 
     $fieldsFirst = $fields.eq(0), 
     validator = $fieldsFirst.data("valid_req_grp") ? $fieldsFirst.data("valid_req_grp") : $.extend({}, this), 
     isValid = $fields.filter(function() { 
      return validator.elementValue(this); 
     }).length >= options[0]; 

    // Store the cloned validator for future validation 
    $fieldsFirst.data("valid_req_grp", validator); 

    // If element isn't being validated, run each require_from_group field's validation rules 
    if (!$(element).data("being_validated")) { 
     $fields.data("being_validated", true); 
     $fields.each(function() { 
      validator.element(this); 
     }); 
     $fields.data("being_validated", false); 
    } 
    return isValid; 
}, $.validator.format("Please fill at least {0} of these fields.")); 

DEMO (с JQuery и HTML): http://jsfiddle.net/y3qayufu/2/

+0

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

+0

@HarshGandhi, отлично работает для меня ... http://jsfiddle.net/y3qayufu/ – Sparky

+0

Я обновил код, но он не работает. Также я загружаю код здесь. Я использую эту форму в файле шаблона smarty –

Смежные вопросы