#javascript #jquery #kendo-grid
#javascript #jquery #kendo-grid
Вопрос:
У меня есть сетка Kendo, где у меня есть столбец с автозаполнением, в котором пользователь вводит буквы для поиска части nbr. (Кстати, я попробовал автозаполнение Kendo и не смог этого добиться, поэтому вместо этого использовал автозаполнение Jquery) Это работает нормально, но хотелось бы, чтобы при вводе пользователем он преобразовывал их строчные буквы в верхний регистр. Возможно ли это в jquery или я должен использовать событие внутри сетки.
Я пробовал разные сценарии, и, похоже, ни один из них не работает. Как вы можете видеть, я прокомментировал то, что пробовал. У меня есть этот код в других функциях, и он отлично работает, но, похоже, не может использовать его в сетке. $(this).val($(this).val().toUpperCase());
//Dropdown Autocomplete Part Nbr within Kendo Grid...
function AutoSearchPartNbrGrid(container, options){
var y = $('<input data-bind="value:' options.field '"/>')
.appendTo(container)
.autocomplete({
minLength: 4,
autoFocus: false,
source: function (request, response) {
$.ajax({
url: String.format('{0}/{1}', $('#hfAutoCompletePartsApiUrl').val(), request.term.toUpperCase()),
type: 'GET',
cache: false,
dataType: 'json',
success: function (json) {
response($.map(json, function (data, id) {
return {label: data.label,value: data.value }
}));
}
});
},
edit: function (e) {
//$(this).val($(this).val().toUpperCase());
//autopartnbr = $(this).val();
//Search Fields to populate the parts grid...
//$(this).on('keypress', function (e) {
// var txt = $(this);
// if (e.keyCode === 13) {
// if (txt.val() !== '') {
// autopartnbr = $(this).val();
// }
// return false;
// }
//});
//var grid = $('#divconfigs').data('kendoGrid');
return false;
},
select: function (e, ui) {
autopartnbr = $(this).val().toUpperCase();
var grid = $('#divconfigs').data('kendoGrid');
return false;
},
error: function (xhr, textStatus, errorThrown) {
console.log('error', textStatus, errorThrown);
},
failure: function (response) { alert(response.responseText) }
});
}
Я ожидаю, что когда вы вводите часть nbr, и если у вас есть строчная буква, она автоматически преобразует ее в верхний регистр.
Спасибо
Комментарии:
1. Вы можете изменить значение. например, просто попробуйте
$(this).val("hello");
, работает ли это?2. Я попробовал: autopartnbr = $(this).val(«привет»). toUpperCase();
3. И он поместил «привет» в сетку…
Ответ №1:
Я полагаю, что цель такого преобразования (из нижнего в верхний регистр) — сравнить его с вашими записями в базе данных. В этом случае вы могли бы использовать функцию автозаполнения и добавить функцию сопоставления для выполнения преобразования :
<input type="text" name="query" id="query" value="" />
<script>
var names=["MYUPPERCASE-ENTRY1","MYUPPERCASE-ENTRY2","MYUPPERCASE-ENTRY3"];
$( "#query" ).autocomplete({
source: function( request, response ) {
matcher=new RegExp("^" $.ui.autocomplete.escapeRegex(request.term ), "i" );
response( $.grep( names, function( value ) {
value = value.label || value.value || value;
return matcher.test(value.toString().toUpperCase());
}) );
},
minLength: 3
});
</script>
Дополнительная информация: https://jqueryui.com/autocomplete /
Комментарии:
1. Я помещаю операторы matcher=new RexExp и response перед вызовом ajax
2. var y = $ (‘ поле ‘»/>’)
3. Вышеуказанное работает, поскольку при вводе преобразования текста любые символы изменяются на прописные. Спасибо за ответы!
4. Уважаемый Стиви, не могли бы вы отметить мой ответ на ваш вопрос как выбранный, пожалуйста?