Есть ли способ обрезать (удалить ведущие / конечные пробелы) введенный пользователем <input>
текстовое поле <input>
для автозаполнения jQuery, прежде чем оно будет сопоставлено с списком имен: значения? В настоящее время у меня есть текстовое поле, в котором пользователи должны вводить имена. Имена затем сопоставляются с списком пар имен: значение jQuery:
<script type="text/javascript"> var resources = [ <?php foreach($data['Resource'] as &$row){ $Name = $row['Forename']." ".$row['Surname']; echo "{"; echo " label:'$Name',"; echo " value:'$row[EmployeeNumber]'"; echo "},"; } ?> ]; jQuery(function(){ jQuery('#Resource').autocomplete({ source: resources, focus: function(event, ui) { jQuery('#Resource').val(ui.item.label); return false; }, select: function(event, ui) { jQuery('#Resource').val(ui.item.label); jQuery('#EmployeeNumber').val(ui.item.value); return false; } }); }); </script>
Моя проблема заключается в том, что если пользователь вводит имя, которое соответствует одному в карте resources
, но с пробелами после него, оно не будет сопоставляться, и поэтому этому значению не будет присвоено значение. Я бы хотел, чтобы по крайней мере (если не были также ведущие пробелы) для конечных пробелов были проигнорированы на этом отображении.
Кроме того, можно ли добавить значение по умолчанию для поля ввода, если карта не найдена?
РЕДАКТИРОВАТЬ:
Как в стороне, возможно ли иметь запись без соответствия, показанную в раскрывающемся поле автозаполнения, если пользователь вводит что-то, что не соответствует? Извинения за редактирование после допроса.
Вы можете найти себя в source
функции, вместо использования встроенной функции , например:
source: function( request, response ) { var matcher = new RegExp($.trim(request.term).replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), "i" ); response($.grep(resources, function(value) { return matcher.test( value.label || value.value || value ); })); }
Здесь вы можете попробовать демо . Это использует $.trim()
чтобы обрезать поисковый $.trim()
до того, как он будет передан в $.grep()
чтобы получить неосведомленный эффект ведущего / конечного белого пространства.
Для вашего редактирования вы можете сделать это, но «No Result …» будет доступен для выбора, попробуйте здесь :
source: function( request, response ) { var matcher = new RegExp($.trim(request.term).replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), "i" ); var matches = $.grep(resources, function(value) { return matcher.test( value.label || value.value || value ); }); response(matches.length ? matches : [{ label: 'No Result Found', value: '' }]); }
Используйте jQuery.trim
:
jQuery.trim(yourValue);