2013-04-30 3 views
0

Я использую автозаполнение JQuery UI. Мне нужно было, чтобы это MustMatch поэтому я его так:Автозаполнение Изменение события после нажатия кнопки

$('#MyAutoComplete').autocomplete({ 
    source: result, 
    minLength: 1, 
    change: function (event, ui) { 
     if (!ui.item) { 
      $('#MyAutoComplete').val(''); 
     } 
    } 
}); 

Не беспокойтесь о результате, как поле заполняется и работает, как ожидалось. Когда кто-то вводит значение, не входящее в список, и нажимает на поле, поле стирается, как я желал, за исключением случаев, когда я нажимаю кнопку отправки. Упрощенная версия моего представить обработчик:

$('#MyButton').get(0).onclick = $('#MyForm').get(0).onsubmit = (function() { 

    $('#MyForm').validate(); 
    var isValid = $('#MyForm').valid(); 

    if (!isValid) { 
     return false; 
    } 
}); 

Если я нажимаю непосредственно от сфокусированного автозаполнения с плохими данными на кнопку отправки, то представить событие происходит перед изменением для автозаполнения. Таким образом, плохие данные передаются. Любое другое действие очищает плохие данные, которые приводят к сбою отправки (поскольку это поле требуется).

Любые идеи, как обойти это?

Я попытался добавить каждое из них в начало события отправки. Ничего не изменило.

$('#MyAutoComeplete').data('autocomplete')._trigger('change'); 

$('#MyAutoComplete').blur(); 

$('#MyButton').focus(); 

ли функция выпадающий требуют более высокой версии сценария, то я использую? Если я это:

$('#MyAutoComplete').autocomplete({ 
        source: result, 
        minLength: 1, 
        change: function (event, ui) { 
         if (!ui.item) { 
          $('#MyAutoComplete').val(''); 
         } 
        } 
       }); 

И превратить его в это:

$('#MyAutoComplete').combobox({ 
        source: result, 
        minLength: 1, 
        change: function (event, ui) { 
         if (!ui.item) { 
          $('#MyAutoComplete').val(''); 
         } 
        } 
       });   

Я получаю эту ошибку:

JavaScript ошибка во время выполнения: Объект не поддерживает свойство или метод 'COMBOBOX'

Я использую:

JQuery UI 1.8.7

ответ

0

Если это необходимо в списке, вы должны использовать функциональные возможности combobox. Основной синтаксис:

<select id="combobox"> 
<option value="">Select one...</option> 
<option value="ActionScript">ActionScript</option> 
<option value="AppleScript">AppleScript</option> 
<option value="Asp">Asp</option> 
<option value="BASIC">BASIC</option> 
<option value="C">C</option> 
<option value="C++">C++</option> 
<option value="Clojure">Clojure</option> 
<option value="COBOL">COBOL</option> 
<option value="ColdFusion">ColdFusion</option> 
<option value="Erlang">Erlang</option> 
<option value="Fortran">Fortran</option> 
<option value="Groovy">Groovy</option> 
<option value="Haskell">Haskell</option> 
<option value="Java">Java</option> 
<option value="JavaScript">JavaScript</option> 
<option value="Lisp">Lisp</option> 
<option value="Perl">Perl</option> 
<option value="PHP">PHP</option> 
<option value="Python">Python</option> 
<option value="Ruby">Ruby</option> 
<option value="Scala">Scala</option> 
</select> 

<script> 
    $(function() { 
     $("#combobox").combobox(); 
    }); 
</script> 

Вы можете увидеть больше о том, как использовать его в http://jqueryui.com/autocomplete/#combobox

+0

http://jqueryui.com/changelog/1.8.7/ показывает, что выпадающий поддерживается для версии – dave

+0

I получил версию JQuery UI с виджетами combobox, и я получаю тот же результат. Я могу щелкнуть прямо из выпадающего списка к кнопке отправки и отправить плохие данные. –

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