Как автоматически отправить выбор, сделанный с помощью Twitter Bootstrap typeahead()??
http://twitter.github.com/bootstrap/javascript.html#typeahead
Как автоматически отправить выбор, сделанный с помощью Twitter Bootstrap typeahead()??
http://twitter.github.com/bootstrap/javascript.html#typeahead
Существует чистый способ использования обратного вызова updater
:
input.typeahead({
'source' : ['foo', 'bar'],
'updater' : function(item) {
this.$element[0].value = item;
this.$element[0].form.submit();
return item;
}
});
Когда пользователь выбирает параметр (щелчком мыши или клавиатурой), обратный вызов заполняет поле ввода и отправляет форму.
$('#search-box.typeahead').typeahead({ hint: true, highlight: true, minLength: 1 }, { name: 'states', displayKey: 'value', source: substringMatcher(states), updater : function(item) { this.$element[0].value = item; this.$element[0].form.submit(); return item; } });
- person Hammad Khan; 20.07.2018
Если вы используете внешний плагин typeahead.js (рекомендуется для Bootstrap 3):
Чтобы вызвать форму при выборе, просто используйте пользовательские события.
$('#my-input')
.typeahead({/* put you options here */})
.on('typeahead:selected', function(e){
e.target.form.submit();
});
Дополнительная информация о пользовательских событиях здесь и демонстрация о JSfiddle.
Возможно, это не лучшее решение, но я только что попробовал это на своей локальной настройке typeahead, и это сработало.
Если ваш шрифт выглядит примерно так...
<form id="test-form" method="post" action="">
<input id="test-input" type="text" data-provide="typeahead"
data-source='["1","2',"3"]' />
</form>
Затем вы можете отправить его с помощью этого javascript.
<script type="text/javascript">
$('#test-input').change(function() {
$('#test-form').submit();
});
</script>
По-видимому, есть несколько git мерж-реквестов. Этот выполняет свою работу и позволяет отправлять массив объектов в typeahead: https://github.com/twitter/bootstrap/pull/1751
Я добавил обратный вызов blur
на вход. Имейте в виду, что вам нужно подождать в течение короткого периода времени, этот ввод может изменить значение на входе, и обратный вызов blur
не вызывается до этого. Это просто обходной путь, но он работает.
$('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);
});
Чтобы заполнить значение скрытого поля в html-форме из выбора данных typeahead, я сделал следующее:
$('#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)
});
Для справки, вот 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>