首页 > 解决方案 > 您可以在网格列内的下拉列表中将字符转换为大写吗?

问题描述

我有一个 Kendo Grid,其中有一列有一个自动完成功能,用户在其中输入字母以进行零件 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 并且如果您有一个小写字母时,它会自动将其转换为大写。

谢谢

标签: javascriptjquerykendo-grid

解决方案


我想这种转换(小写到大写)的目的是将它与您的数据库条目进行比较。在这种情况下,您可以使用 autocomplete-function 并添加 matcher-function 来执行转换:

 <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/


推荐阅读