2011-06-01 12 views
9

Estoy usando jquery autocomplete combobox y todo está bien. Pero también quiero establecer el valor específico a través de JavaScript como $("#value").val("somevalue") y se establece para seleccionar el elemento, pero no hay cambios en el elemento de entrada con autocompletar.establecer el valor en el combobox de autocompletar de jquery

Por supuesto, puedo seleccionar esta entrada y establecer el valor directamente, pero ¿hay alguna otra manera de hacerlo? Intento establecer vincular a this.element como this.element.bind("change", function(){alert(1)}) pero no hubo efectos. Y no sé por qué.

Editar

He encontrado una solución para este caso. Pero no me gusta He añadido el código siguiente a la función de _create ui.combobox

this.element.bind("change", function() { 
    input.val($(select).find("option:selected").text()); 
}); 

Y cuando tengo que cambiar el valor puedo usar $("#selector").val("specificvalue").trigger("change");

+0

nos muestran algunos de su html html .. –

+1

qué tipo? se parece a xandox

Respuesta

25

¿Cuál es this demo lo que busca?

El enlace establece el valor de la autocompletar de jQuery UI en Java. El enfoque se deja en la entrada para que los eventos normales del teclado se puedan usar para navegar por las opciones.

Editar: Cómo sobre la adición de otra función a la lista desplegable de esta manera:

autocomplete : function(value) { 
    this.element.val(value); 
    this.input.val(value); 
} 

y decir que es el valor que desea establecer:

$('#combobox').combobox('autocomplete', 'Java'); 

Updated demo

I no puedo encontrar ninguna función existente disponible para hacer lo que quieras, pero esto parece funcionar bien para mí. Espero que esté más cerca del comportamiento que necesita.

+0

Sí. Este es un comportamiento correcto pero no completo. No debe olvidar call $ ("# combobox"). Val ("Java"). Mira mi edición para la pregunta. Encontré una solución. Pero no debería olvidar la función de activación de llamada, y es incómodo. – xandox

+1

Bien, creo que lo entiendo. Está buscando una solución discreta. He agregado una nueva demostración que podría ser mejor. – andyb

+0

yeh. Esto es lo que busqué. Gracias cauteloso. – xandox

-1

http://jsfiddle.net/nhJDd/

$(".document").ready(function(){ 
    $("select option:eq(1)").val("someNewVal"); 
    $("select option:eq(1)").text("Another Val"); 
    $("select option:eq(1)").attr('selected', 'selected'); 

}); 

aquí es un ejemplo de trabajo y jquery, supongo que quiere cambiar el valor de una selección, cambiar su cara de texto y también tenerla seleccionada al cargar la página?

#

Intento 2:

aquí es otro violín: http://jsfiddle.net/HafLW/1/, Qué quiere decir que seleccione una opción y desea anexar ese valor a la función de autocompletar de un área de entrada?

$(".document").ready(function(){ 
    someString = "this,that"; 
     $("input").autocomplete({source: someString.split(",")}); 

    $("select").change(function(){ 
     alert($(this).val()+" appended"); 
someString = someString+","+$(this).val(); 
     $("input").autocomplete({source: someString.split(",")}); 


    }); 
}); 
+0

:) en realidad no. quiero seguir. si cal $ ("# select"). val ("somevalue") ("somevalue" ya existe en las opciones seleccionadas), el texto de entrada (elemento agregado con autocompletar) también cambia – xandox

+0

ah ok, eso es un poco más claro :) – John

+0

:) ** user763228 ** mira la respuesta por ** andyb ** Hace casi lo correcto. – xandox

4

Logré una manera rápida y sucia de establecer el valor. Sin embargo, necesita conocer tanto el valor como el texto del artículo que desea mostrar en el menú desplegable.

var myValue = foo; // value that you want selected 
var myText = bar; // text that you want to display 
// You first need to set the value of the (hidden) select list 
$('#myCombo').val(myValue); 
// ...then you need to set the display text of the actual autocomplete box. 
$('#myCombo').siblings('.ui-combobox').find('.ui-autocomplete-input').val(myText); 
1

Me gusta mucho lo andyb hizo, pero lo necesitaba para hacer un poco más en torno a la gestión de eventos a ser capaz de manejar que activa el evento debido a un cambio "seleccionado" no manejar cuando oprimir la tecla Enter o perder el foco en la entrada (presionando la pestaña o haciendo clic con el mouse).

Como tal, el uso de lo andyb hicieron como una base, así como la última versión del script jQuery Autocompletar, he creado la siguiente solución: DEMO

  • Introduzca: elige el primer elemento si menú es visible
  • Enfoque perdido: coincidencia parcial no desencadena encontró mensaje y borra la entrada (jQuery UI), pero la respuesta totalmente escrito "selecciona" ese valor (no entre mayúsculas y sensative)

cómo cambian método puede ser utlized:

$("#combobox").combobox({ 
    selected: function (event, ui) { 
     $("#output").text("Selected Event >>> " + $("#combobox").val()); 
    } 
}) 
.change(function (e) { 
    $("#output").text("Change Event >>> " + $("#combobox").val()); 
}); 

Esperemos que esto ayuda a otras personas que necesitan funcionalidad de cambio de evento adicional para compensar las carencias que "seleccionado" deja abierta.

3

@andyb, Creo reescritura:

autocomplete: function (value) { 
     this.element.val(value); 

     var selected = this.element.children(":selected"), 
       value = selected.val() ? selected.text() : ""; 
     this.input.val(value); 
    } 
+0

Esta sería una mejor respuesta si explicara su código. –

+1

var selected = this.element.children (": selected"); value = selected.val()? selected.text(): ""; // obtendrá el valor de texto de la opción que se selecciona para el valor de entrada en lugar del valor de la opción – nthaih

Cuestiones relacionadas