привет приходит приветствие, когда я пытаюсь отредактировать запись в ajax
{"suggestions": [{"value": "Pendiente","data": 1},{"value": "Programar","data": 2},}
но когда я редактирую запись, мне приходит число, которое я имею в виду ДАННЫЕ, но оно показывает мне число, и я хочу получить это значение. Любые идеи?
мой код:
$('#eestado').val(estatus); // example estatus = 1
$('#eestado').autocomplete({
serviceUrl: '{{ url('/getestados/') }}',
onSelect: function (suggestion) {
$('#eestado').val(suggestion.data);
},
formatResult: function(suggestion, currentValue){
if (suggestion.data === null) {
return "Create a new tag";
}
return suggestion.value;
},
onInvalidateSelection: function() {
$('#eestado').val('');
}
});
Я использую плагины, это JQuery / автозаполнение
это использовать JQuery / автозаполнение
Хорошо, я не вижу serviceUrl
в качестве опции для автозаполнения. Я не вижу onSelect
, formatResult
или onInvalidateSelection
как события для автозаполнения. Вот почему я спросил, они не подходят для этого виджета.
Кроме того, где термин запроса передается вашему URL-адресу, чтобы он знал, какие конкретные элементы отображать в наборе результатов?
Дело в том, что если вы увидите URL-адрес плагина, который я использую, вы увидите, что это не тот плагин, который вы комментируете.
Хорошо, понятно, это devbridge.com/sourcery/components/jquery-autocomplete, а НЕ jQuery UI.
Если вы заинтересованы в использовании автозаполнения jQuery UI, вам нужно будет просмотреть следующий пример:
http://jqueryui.com/autocomplete/#multiple-remote
В вашем коде это будет выглядеть примерно так: Автозаполнение пользовательского интерфейса jQuery
var estatus = 1;
var exampleData = {
"suggestions": [{
"value": "Pendiente",
"data": 1
}, {
"value": "Programar",
"data": 2
}]
};
$(function() {
function split(val) {
return val.split(/,\s*/);
}
function extractLast(term) {
return split(term).pop();
}
$('#eestado').val(estatus); // example estatus = 1
$('#eestado').on("keydown", function(event) {
if (event.keyCode === $.ui.keyCode.TAB &&
$(this).autocomplete("instance").menu.active) {
event.preventDefault();
}
}).autocomplete({
source: function(req, resp) {
var url = "{{ url('/getestados/') }}";
var results = [];
$.get(url, {
q: extractLast(req.term)
}, function(data) {
$.each(data.suggestions, function(k, v) {
results.push({
label: v.value,
value: v.data
});
});
});
resp(results);
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function(event, ui) {
var terms = split(this.value);
terms.pop();
terms.push(ui.item.value);
terms.push("");
this.value = terms.join(", ");
return false;
}
});
});
<link rel = "stylesheet" href = "//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel = "stylesheet" href = "/resources/demos/style.css">
<script src = "https://code.jquery.com/jquery-1.12.4.js"></script>
<script src = "https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<input id = "eestado" type = "text" />
Для автозаполнения jQuery
В своем комментарии вы упоминаете, что используете альтернативный метод автозаполнения jQuery: https://www.devbridge.com/sourcery/components/jquery-autocomplete/
Они говорят:
Known Issues
If you use it with jQuery UI library it also has plugin named autocomplete. In this case you can use plugin alias devbridgeAutocomplete:
$('.autocomplete').devbridgeAutocomplete({ ... });
Так что будьте внимательны, если вы включаете обе библиотеки. Для вашего кода я бы изменил только один элемент:
onSelect: function (suggestion) {
$('#eestado').val(suggestion.value);
}
Когда пользователь делает выбор, на входе появляется value
, а не data
.
Полный код:
$('#eestado').autocomplete({
serviceUrl: '{{ url('/getestados/') }}',
onSelect: function (suggestion) {
$('#eestado').val(suggestion.value);
},
formatResult: function(suggestion, currentValue){
if (suggestion.data === null) {
return "Create a new tag";
}
return suggestion.value;
},
onInvalidateSelection: function() {
$('#eestado').val('');
}
});
Надеюсь, это поможет.
Очень хорошо, я постараюсь проверить эту процедуру, большое спасибо ... Я откорректирую и посмотрю результат. +1
Но я хочу, чтобы текст отображался, а значение - это число
@GustavoHerrera См. Вторую половину ответа относительно вашего конкретного кода.
попробуйте, как вы упомянули во второй части, но при загрузке формы поле показывает мне идентификатор, а не текст. Теперь, когда я удаляю информацию и пишу другую, я получаю букву, но когда я вижу ее значение, это буква, а не цифра. Это проблема, которую я представляю сейчас. Но бывает при редактировании
@GustavoHerrera, судя по вашему описанию, ваша форма загружается с $('#eestado').val(estatus);
, и вы упомянули, что estatus
- это 1
. Так что я не уверен, чего вы ожидали.
Если точно, при загрузке формы для редактирования мне приходит значение 1, но его связь с suggetions.value = "pending", если, например, я редактирую другую запись, где status = 2, тогда suggetions.value = "Schedule" ...
Я делаю это по-другому, чтобы заставить его работать, но я не думаю, что он правильный, это то, что я помещаю скрытый ввод и передаю значение, а видимый ввод показывает данные. Но я не думаю, что это правильный путь.
@GustavoHerrera Я бы посоветовал вам отредактировать свой пост и включить более подробную информацию. Похоже, что происходит что-то еще, и комментарии нечеткие.
Добро пожаловать в Stack Overflow. Ваш код пользовательского интерфейса jQuery не соответствует параметрам и методам пользовательского интерфейса jQuery для автозаполнения (api.jqueryui.com/autocomplete). Вы используете какой-то дополнительный плагин?