Si se necesita asistencia de declaración para javascript

Estoy usando autocompletar donde cada variable que se busca tiene 3 atributos (etiqueta, id, valor). Quiero que el valor de la selección de un usuario se pase a uno de los cuatro campos ocultos según la identificación de esa selección.

archivo js

var destinations= [
        {value: "25",label: "USA",id: "1"},
        {value: "26",label: "Midwest",id: "2"},
        {value: "27",label: "Colorado",id: "3"},
        {value: "28",label: "Denver",id: "4"}
        ];

$(document).ready(function() {
    $( "#destinations" ).autocomplete({
        minLength: 1,
        source: destinations,

        select: function( event, ui ) {
            $('#destinations').val( ui.item.label );
            $('#destinationid').val(ui.item.id);
            $('#destinationtype').val(ui.item.value);
            if ($("#destinationid").val() == 1){
            $("#results1").text($('#type1').val());
        }
        if ($("#destinationid").val() == 2){
            $("#results2").text($('#type2').val());
        }
        if ($("#destinationid").val() == 3){
            $("#results3").text($('#type3').val());
        }
        if ($("#destinationid").val() == 4){
            $("#results4").text($('#type4').val());
        }
    },

        focus: function( event, ui ) {
            $("#destinations").val( ui.item.label );
            return false;
        }
    });

});

En mi html, tengo lo siguiente: (no los tengo ocultos para fines de prueba).

<input id="destinations" /> 
<input type="hidden" input id="type1" /> 
<input type="hidden" input id="type2" />
<input type="hidden" input id="type3" />
<input type="hidden" input id="type4" /> 

La selección automática tira bien de las etiquetas, pero cuando selecciono una, cambia la selección a su valor en lugar de mantener la etiqueta. Tampoco es poner el valor en el cuadro de texto correspondiente y simplemente dejar el valor en el primer cuadro de texto.

Cualquier sugerencia sera apreciada.

preguntado el 25 de agosto de 12 a las 22:08

Bueno, siento que es mi archivo js el que tiene algo mal con la lógica. -

Bien, ¿etiqueté algo como java y no como javascript? -

sí. Puede consultar el historial de revisiones. Lo etiquetaré en javascript. ;) -

En las declaraciones if, no debe usar "="; necesita usar "==" para las comparaciones. ¿Por qué tiene "entrada" como atributo para cada uno de sus elementos? ¿Y qué es la variable "destinationid"? No lo declaras en ningún lado. -

4 Respuestas

var destinations= [
        {value: "25",label: "USA",id: "1"},
        {value: "26",label: "Midwest",id: "2"},
        {value: "27",label: "Colorado",id: "3"},
        {value: "28",label: "Denver",id: "4"}
        ];



$(document).ready(function() {
    $( "#destinations" ).autocomplete({
        minLength: 1,
        source: destinations,

        select: function( event, ui ) {
                $('#destinations').val( ui.item.label );
                var destinationId = u.item.id;
                $('#destinationvalue').val(ui.item.value);
                $('#type' + destinationId).val(ui.item.value);
        },

        focus: function( event, ui ) {
            $("#destinations").val( ui.item.label );
            return false;
        }
    });

});

Respondido 26 ago 12, 01:08

Hice el cambio usando su primera sugerencia y sigo recibiendo los mismos resultados. Cambia el primer cuadro al valor y deja los otros 4 cuadros de texto en blanco. - pkracer

Si desea actualizar el valor del cuadro de texto a la identificación de lo que se eligió (o etiqueta), ¿debería usar $('#type1').val($("#destinationid").val())? Ver mi edición. - jason presa

Edité, pero ahora no puedo seleccionar un elemento de las sugerencias de selección automática para ver si se llena el otro campo. Las sugerencias aparecen pero no se pueden seleccionar. - pkracer

Hey hombre, gracias por la ayuda. Pude hacerlo funcionar con algunos ajustes a su código. Respondido a continuación. - pkracer

<input type="hidden" input id="type1" />

Obtuviste una "entrada" adicional en tus etiquetas de entrada... No estoy seguro de si quisiste decir que estaba allí a propósito para probar o qué, pero eso seguramente causaría un comportamiento no deseado.

Respondido 25 ago 12, 22:08

Devuelva falso desde dentro de su declaración de selección, de lo contrario, la selección predeterminada de jquery UI se ejecutará después de la suya.

Demostración de código de trabajo: http://jsfiddle.net/FCw9f/

Respondido 25 ago 12, 23:08

Oye, gracias por juntar eso, pero si elimino las declaraciones ocultas de la entrada de tipo 1-4, no veo que se complete ningún valor. ¿Algunas ideas? - pkracer

Pude resolverlo gracias a que Jason me indicó la dirección correcta. Todavía no es perfecto, pero está haciendo lo que quiero. http://jsfiddle.net/pkracer/RADGs/

Respondido 26 ago 12, 17:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.