2013-09-07 18 views
7

Sto usando librerie jquery 1.8.2 e jqueryui 1.9.0.jquery textbox set completo valore valore programmatico

Sto tentando di aggiungere una finestra di dialogo "Modifica record" alla mia tabella che contiene una casella di testo a completamento automatico di jquery-ui.

Sto anche utilizzando l'evento di modifica del completamento automatico per limitare l'utente per la selezione degli elementi dall'elenco fornito.

Il mio problema è: quando mostro il mio modulo di modifica, io pongo i dati esistenti alla casella di testo, tuttavia quando l'utente fa clic su un altro campo nel modulo di modifica, il controllore di cambiamento popping l'errore di nulla è cambiato. Ho trovato molti esempi che mostrano come impostare il valore per il completamento automatico del tipo di combobox ma non sono riuscito a trovarne uno per il tipo di textbox. Per favore aiutatemi su questo tema, credo che le vostre risposte saranno utili anche per altri utenti.

Ecco il mio codice per il completamento automatico testo:

$("#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'); 

     } 
    }); 

e qui è il codice per la visualizzazione di dialogo Modifica record:

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

     clearEditMaterialForm(); 

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

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

    }); 

vi ringrazio molto per le vostre risposte.

risposta

9

Non è bello, forse non è corretto, ma si sta lavorando:

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

Speranza che aiuta.

+0

È così divertente e funziona bene, Davvero grazie amico ... – Ali

+0

Perfetto. Funziona alla grande. –

+0

Grazie mille per aver tirato fuori i capelli, funziona ancora. – jared