2012-02-24 29 views

Respuesta

3

Aparentemente hay unas pocas solicitudes de fusión de git. Éste hace el trabajo y le permite enviar una matriz de objetos para escribir anticipadamente: https://github.com/twitter/bootstrap/pull/1751

+0

ya entiendo que no es la mejor solución posible. Pero era lo único que podía pensar como una solución temporal. – Jako

7

podría no ser la mejor solución, pero simplemente intentado esto en mi configuración de escritura siguiente nivel local y ha funcionado.

Si su typeahead ve algo como esto ...

<form id="test-form" method="post" action=""> 
      <input id="test-input" type="text" data-provide="typeahead" 
      data-source='["1","2',"3"]' /> 
    </form> 

A continuación, se puede presentar con este javascript.

<script type="text/javascript"> 
     $('#test-input').change(function() { 
      $('#test-form').submit(); 
     }); 
    </script> 
+2

Hmm, simplemente lo probé. Solo parece funcionar cuando selecciono directamente la opción, pero no cuando presiono enter o tab para seleccionar. –

0

Agregué una devolución de llamada blur en la entrada. Tenga en cuenta que debe esperar un breve período, que typeahead puede cambiar el valor de la entrada y no se llama a la devolución de llamada blur. Es solo una solución, pero funciona.

$('input.myTypeaheadInput').blur(function(e) { 
    window.setTimeout(function() { 
     window.console && console.log('Works with clicking on li item and navigating with the keyboard. Yay!'); 
    }, 50); 
}); 
21

Hay una manera limpia mediante la devolución de llamada updater:

input.typeahead({ 
    'source' : ['foo', 'bar'], 
    'updater' : function(item) { 
     this.$element[0].value = item; 
     this.$element[0].form.submit(); 
     return item; 
    } 
}); 

Cuando el usuario selecciona una opción (ya sea por clic del ratón o teclado), la devolución de llamada rellena el cuadro de entrada y envía el formulario.

+0

Lamentablemente esta opción brillante, no parece estar presente en construcciones recientes .. –

10

Si se utiliza el plug-in typeahead.js externa (recomendado para Bootstrap 3):

para desencadenar un formulario en seleccione sólo tiene que utilizar los eventos personalizados.

$('#my-input') 
    .typeahead({/* put you options here */}) 
    .on('typeahead:selected', function(e){ 
    e.target.form.submit(); 
    }); 

Más información sobre los eventos personalizados here y demostración sobre JSfiddle.

+0

me salvó la vida @HaNdTriX – Kathan

+0

estoy feliz de escuchar eso. :-) – HaNdTriX

0

para rellenar un valor de un campo oculto en un formulario HTML a partir de la selección de datos de escritura siguiente, hice lo siguiente:

$('#prefetch').typeahead({ 
hint: true, 
highlight: true, 
minLength: 1 
}, 
{ 
name: 'trees', 
source: trees, 
limit: 15 
}).on('typeahead:selected', function(e) { 
var result = $('#prefetch').val() 
$('#formpane input[name=\"myID\"]').val(result) 
}); 

Como referencia, aquí está el código html:

<body> 
<div id="formpane"> 
    <form action="/thanks" method="POST"> 
    <input class="typeahead" type="text" placeholder="select categories" id="prefetch"> 
    <button type="submit">Submit</button> 
    <input type="hidden" name="myID" /> 
    </form> 
</div> 
<script type="text/javascript" src="js_file_above.js"></script> 
</body> 
Cuestiones relacionadas