2013-09-07 20 views
7

Używam bibliotek jquery 1.8.2 i jqueryui 1.9.0.Automatycznie uzupełnij wartość pola tekstowego Jquery wartości zaprogramowanej

Próbuję dodać okno "Edytuj rekord" do mojej tabeli, która zawiera pole tekstowe autouzupełniania jquery-ui.

Używam również zdarzenia zmiany autouzupełniania, aby ograniczyć użytkownika do wybierania elementów z podanej listy.

Moim problemem jest: kiedy pokazuję swój formularz edycyjny, ustawiam istniejące dane w polu tekstowym, jednak gdy użytkownik kliknie na inne pole w formularzu edycji, kontroler zmian pojawiający się w błędzie nic się nie zmieni. Znalazłem wiele próbek, które pokazują, jak ustawić wartość dla autouzupełniania typu combobox, ale nie mogłem znaleźć dla typu pola tekstowego. Pomóżcie mi w tej sprawie, wierzę, że wasze odpowiedzi będą przydatne także dla innych użytkowników.

tutaj jest mój kod autouzupełniania tekstowego:

$("#EditMaterialName").autocomplete({ 
     source: function (request, response) { 
      $.ajax({ 
       type: "POST", 
       url: "someurl", 
       dataType: "json", 
       data: { 
        search_string: request.term 
       }, 
       success: function (data) { 
        response($.map(data, function (item) { 
         return { 
          label: item.description, 
          value: item.description 
         } 
        })); 
       } 
      }); 
     }, 
     minLength: 2, 
     select: function (event, ui) { 

     }, 
     change: function (event, ui) { 
      if (!ui.item) { 
       $('<div class="error"><b> please select a listed value.</b><div>').insertAfter('#EditMatName'); 
       $('#EditMaterialName').val(''); 
      } 
     }, 
     open: function() { 
      $(this).removeClass('ui-corner-all').addClass('ui-corner-top'); 

     }, 
     close: function() { 
      $(this).removeClass('ui-corner-top').addClass('ui-corner-all'); 

     } 
    }); 

i tutaj jest kod do wyświetlania okna dialogowego Edycja rekordu:

$('a.edit_link').live("click", function() { 

     clearEditMaterialForm(); 

     //loading selected value 
     var valMaterialName = $(this).closest('tr').children('td.cl_material_name').text(); 

     $('#EditMaterialName').val(valMaterialName); 

    }); 

bardzo dziękuję za odpowiedzi.

Odpowiedz

9

To nie jest piękne, może to nie jest poprawne, ale to działa:

function setAutocompletCurrentValue(id, value) { 
    $(id).val(value); 
    var textToShow = $(id).find(":selected").text(); 
    $(id).parent().find("span").find("input").val(textToShow); 
} 

Nadzieję, że to pomaga.

+0

To jest takie zabawne i działa dobrze, naprawdę dziękuję koleś ... – Ali

+0

Perfect. Działa świetnie. –

+0

Wielkie dzięki zaczynałem wyciągać włosy, to działa nadal. – jared