Как реализовать преобразование в верхнем регистре в jqgrid - PullRequest
1 голос
/ 06 ноября 2011

Коды Producr могут содержать только заглавные буквы. Если вводятся строчные символы, jqgrid не преобразует их в верхний регистр, такой опции нет. Как форсировать преобразование введенных символов в jqgrid в строчные буквы и режимы редактирования формы для текстовых полей?

Обновление

Я нашел код в Как заставить ввод данных в верхнем регистре в текстовом поле ASP.NET? последний ответ. Этот код изменяет введенный символ в верхнем регистре при нажатии клавиши. Разумно ли использовать это, добавив обработчик событий keyprees в элементы управления редактированием jqgrid?

function ToUpper() { 
        // So that things work both on FF and IE 
        var evt = arguments[0] || event; 
        var char = String.fromCharCode(evt.which || evt.keyCode); 

        // Is it a lowercase character? 
        if (/[a-z]/.test(char)) { 
            // convert to uppercase version 
            if (evt.which) { 
                evt.which = char.toUpperCase().charCodeAt(0); 
            } 
            else { 
                evt.keyCode = char.toUpperCase().charCodeAt(0); 
            } 
        } 

        return true; 
    } 

Используется так:

   <asp:TextBox ID="txtAddManager" onKeyPress="ToUpper()" runat="server"  
         Width="84px" Font-Names="Courier New"></asp:TextBox> 

Ответы [ 2 ]

1 голос
/ 06 ноября 2011

Прежде всего вы можете использовать стиль CSS text-transform: uppercase до отображать данные, набранные пользователем в верхнем регистре:

editoptions: { dataInit: function (el) { $(el).css('text-transform', 'uppercase'); }}

Настройка не изменит сами данные. Таким образом, вы должны сделать соответствующую модификацию дополнительно. В случае редактирования формы вы можете использовать beforeSubmit. Например, допустим, у вас есть столбец 'name', который вам нужно держать в верхнем регистре. Затем вы сначала добавляете параметр text-transform: uppercase в dataInit (см. Выше) и добавляете

beforeSubmit: function (postData) {
    postData.name = postData.name.toUpperCase();
    return [true, ''];
}

В случае встроенного редактирования функция обратного вызова beforeSubmit отсутствует. так что вы можете использовать serializeRowData, если у вас есть удаленные данные:

serializeRowData: function (postData) {
    postData.name = postData.name.toUpperCase();
    return postData;
}

В случае использования editurl: 'clientArray' вы можете исправить данные в параметре aftersavefunc editRow и saveRow:

aftersavefunc: function (rowid) {
    var $grid = $(this),
        newName = $grid.jqGrid("getCell", rowid, 'name');
    $grid.jqGrid("setCell", rowid, 'name', newName.toUpperCase());
}

См. Демо .

0 голосов
/ 06 ноября 2011

попробуй:

 $(document).ready(function(){
          $("div").text("lower case.");
          var UCASE =  $("div").text($("div").text().toUpperCase());
          alert(UCASE);
    });

или

$(document).ready(function(){    
   var strVal = 'lowerCase!!' ;  
   alert(strVal.toUpperCase()); 
});
...