как использовать проверку jquery с автозаполнением jquery в моем коде

привет, я использую codeigniter. я использую ajax автозаполнение для jquery и плагин проверки jquery

есть поле ввода под названием город

<input type="text" class="city" name="city" value="">

я использую автозаполнение для этого поля ввода

код jquery

 var a = jq('.city').autocomplete({ 
    serviceUrl:"<? echo $this->config->item('base_url'); ?>home/auth/city_autocomplete",
 });

изображение этого

введите здесь описание изображения

когда я выбираю значение из раскрывающегося списка, плагин проверки jquery выдает ошибку «минимальная длина 3». но название города больше 3 символов

это мой код плагина проверки

    var x=jq("#contactinfo").validate({
        rules: {

            city: {
                required:{
                    depends: function(){
                                    return ((type == "Single Store & Venue") || (type == "Chain Store & Venue")|| (type == "Department Store"));
                             }
                        },
                minlength: 3,
                maxlength: 50                   
            },
       },

        messages: {

            city: {
                required: "Enter City",
                minlength: "min length 3"
            },
        }
    }); 

tihs - это изображение ошибки

введите здесь описание изображения

почему это происходит . как этого избежать , я оооооооооооооооооооочень сильно устал , около недели не мог понять в чем дело но так и не смог . пожалуйста, помогите .......................... большое спасибо .

ОБНОВИТЬ

это город, штат и почтовый индекс html. штат и почтовый индекс — это поля рядом с полем города.

                                <div class="input-container">
                                        <div class="catergory-title-c">
                                            <span class="verdana12gray"></span>
                                        </div>
                                        <div class="form-item">
                                            <div class="catergory-inputs-b">
                                                <div class="input-small">
                                                <input
                                                   class="city clear-input"
                                                   id="textarea_small_1"
                                                   value="<?php if(isset($city['value'])){  echo $city['value'] ; }else{echo $map['other']['CityName'];} ?>"
                                                   type="text"
                                                   name="city"
                                               />                       

                                                </div>
                                                <div class="input-small">
                                                        <input
                                                               class="state clear-input"
                                                               id="textarea_small_2"
                                                               value="<?php if(isset($state['value'])){ echo $state['value'] ; } ?>"
                                                               type="text"
                                                               name="state"
                                                           />                                                               

                                                </div>
                                                <div class="input-small">
                                                    <input type="text" id="textarea_small_3" name="zip_code"
                                                        value="<?php if(isset($zip_code['value'])){ echo $zip_code['value'] ; } ?>" />
                                                </div>

                                            </div>
                                        </div>
                                        <div class="clear-fix"></div>
                                    </div>

person Kanishka Panamaldeniya    schedule 14.09.2011    source источник
comment
В вашем коде вы подключаете автозаполнение к классу .city. Какое имя/идентификатор поля города? Есть ли более одного поля города? Какие два поля рядом с полем Кейптауна на скриншоте? Некоторый дополнительный размещенный код HTML был бы полезен.   -  person Dan Short    schedule 14.09.2011
comment
я использую только класс, есть только одно поле города, следующие два поля — штат и почтовый индекс. я опубликую немного HTML   -  person Kanishka Panamaldeniya    schedule 14.09.2011


Ответы (2)


Похоже, ваш валидатор jquery срабатывает до того, как автозаполнение помещает выбранное значение в поле вашего города, поэтому в вашем примере проверяется «а» (вместо «Кейптаун»).

Возможно, вы сможете исправить это, заполнив поле города «быстрее» с помощью обратного вызова onRollover (вместо того, чтобы ждать, пока пользователь сделает выбор). Я не знаю, какую библиотеку автозаполнения вы используете, но я смотрю на эту http://www.codenothing.com/demos/2009/auto-complete/docs/, и вы сможете сделать что-то вроде этого:

    jq('.city').autoComplete({
        onRollover: function(event, ui){
            jq('.city').val(ui.data.value)
        }
    });
person enriko    schedule 17.09.2011

гм, у вас есть дубликат идентификатора ТАМ:

 id="textarea_small" 

После исправления вышеуказанного вам нужно будет перехватить событие проверки, чтобы заставить его запустить ПОСЛЕ события выбора - с автозаполнением пользовательского интерфейса jQuery, что довольно просто, т.е.

...
select: function(event, ui) {
    var selectedValue = ui.item.value;
    var focusedElement = $(this);
    // my pretend function checkData OR add a validation event fire here.
    checkData(focusedElement, ui.item, selectedValue);
    return false;
},
...

Я не знаком с плагином, который вы используете, но он должен иметь что-то подобное.

person Mark Schultheiss    schedule 14.09.2011
comment
Затем отредактируйте публикацию кода, чтобы отразить, какой ввод имеет ПРАВИЛЬНЫЙ идентификатор, а какой образец неверен: <div class="input-small"><input class="city clear-input" id="textarea_small" value="<?php if(isset($city['value'])){ echo $city['value'] ; }else{echo $map['other']['CityName'];} ?>" type="text" name="city" /></div> <div class="input-small"><input class="state clear-input" id="textarea_small" value="<?php if(isset($state['value'])){ echo $state['value'] ; } ?>" type="text" name="state" /></div> - person Mark Schultheiss; 14.09.2011
comment
Марк Шультхайс -› я отредактировал код, но он все равно не работает - person Kanishka Panamaldeniya; 15.09.2011