9

Estoy utilizando el autocompletado de jQuery y está funcionando bien, ahora quiero almacenar una variable en sesión de jQuery cuando se produce la siguiente condición.Jquery autocompletar en el evento de selección

Cuando alguien escribe una palabra jQuery muestra el menú desplegable de sugerencias, si alguien selecciona un elemento de ese menú desplegable de sugerencias.

Quiero capturar el punto anterior y almacenar una variable en la sesión.

Busqué en Google, StackOverflow pero no encontré ninguna solución relevante. Mi código de autocompletar es el siguiente:

$(".autosearch-smart").autocomplete('Home/GetCompanyNames', { 
    minChars: 1, 
    width: 402, 
    matchContains: "word", 
    autoFill: true 
}); 

y esto es lo que he intentado hacer:

$(".autosearch-smart").autocomplete('Home/GetCompanyNames', { 
    minChars: 1, 
    width: 402, 
    matchContains: "word", 
    autoFill: true, 
    select: function (a, b) { 
     alert("selected"); 
    } 

}); 

EDIT: manejador Seleccionar evento también no está funcionando

estoy usando ASP. MVC3 neto con C#. Por favor ayúdenme y gracias de antemano.

+0

revise su consola de error lo que dice ...? –

+0

no se muestra nada en la consola @Aant –

+0

@smartboy ¿Cuáles son las bibliotecas de jquery que usaste? –

Respuesta

15

Así que si he entendido bien que desea almacenar el valor seleccionado en una Sesión de variables

puede obtener el valor de la opción seleccionada a través siguiente código:

$(".autosearch-smart").autocomplete('Home/GetCompanyNames', { 
minChars: 1, 
width: 402, 
matchContains: "word", 
autoFill: true, 
select: function (event, ui) { 
    var label = ui.item.label; 
    var value = ui.item.value; 
    //store in session 
    document.valueSelectedForAutocomplete = value 
} 
}); 

el valor y la etiqueta se objetos JSON que vinieron desde el servidor

espero que esta ayuda

+1

Seleccionar el evento no funciona como te dije en mi pregunta y lo intenté de nuevo pero no tuve éxito –

+1

¿Por qué el seleccionador no funciona? –

1

Bueno, si usted desea almacenar en la sesión utilizando asp.net MVC3 luego hacer la siguiente

$(".autosearch-smart").autocomplete('Home/GetCompanyNames', { 
    minChars: 1, 
    width: 402, 
    matchContains: "word", 
    autoFill: true, 
    select: function (event, ui) { //must be cleared with function parameter 
     //alert(ui.item.label); //will show you the selected item 

     $.ajax({ 
      type: 'POST', 
      url: '/Controller/Action1', //whatever any url 
      data: {label: ui.item.label}, 
      success: function(message) { if(message.data == true) ... else ... }, 
      dataType: 'json' 
     }); 

    } 

}); 

y el controlador

[HttpPost] 
    public JsonResult Action1(string label) { 

    this.Session["AnyValue"] = label; 

    return Json(new { 
     data = true 
    }, JsonRequestBehavior.AllowGet); 
    } 
+0

No crea que necesita la configuración JsonRequestBehavior.AllowGet, ya que está filtrada como HTTPPOST –

+0

Es opcional (JsonRequestBehavior.AllowGet) –

-2

Su título de la pregunta parece aburrido, pero por la descripción entiendo su pregunta. Ahora tome estos puntos en cuenta:

  1. Las sesiones están en el servidor.
  2. haga clic en evento está en el lado del cliente.

Ahora debe enviar una notificación del lado del cliente al servidor sobre el mismo. Esto se puede lograr a través de AJAX en la forma siguiente:

  1. bind ".autosearch-inteligente" a Haga clic en() y en el interior clic maquillaje ajax() petición a una URL específica en su sitio con un parámetro de etiquetado clic = verdadero por ej. yoursite.com/sessionsettercontroller?clicked=true

  2. en el lado del servidor en sessionsettercontroller check para clicked = true y luego establezca la variable en SESSION.

Cuestiones relacionadas