Javascript 如何在jqgrid中实现大写转换

Javascript 如何在jqgrid中实现大写转换,javascript,jquery,jqgrid,uppercase,Javascript,Jquery,Jqgrid,Uppercase,Producr代码只能包含大写字符。如果输入小写字符,jqgrid不会将其转换为大写,则没有此类选项。 如何在文本字段的内联和表单编辑模式下强制jqgrid中输入字符的大写转换 更新 我在最后一个答案中找到了密码。此代码更改按键时输入的大写字符。通过向jqgrid编辑控件添加keyprees事件处理程序来使用它是否合理 function ToUpper() { // So that things work both on FF and IE var evt =

Producr代码只能包含大写字符。如果输入小写字符,jqgrid不会将其转换为大写,则没有此类选项。 如何在文本字段的内联和表单编辑模式下强制jqgrid中输入字符的大写转换

更新

我在最后一个答案中找到了密码。此代码更改按键时输入的大写字符。通过向jqgrid编辑控件添加keyprees事件处理程序来使用它是否合理

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> 

试试:

尝试:


首先,您可以使用CSS样式
文本转换:大写
以大写显示用户键入的数据:

editoptions: { dataInit: function (el) { $(el).css('text-transform', 'uppercase'); }}
该设置不会更改数据本身。因此,您必须另外进行相应的修改。在进行表单编辑时,您可以在提交前使用
。例如,我们有一个列
“name”
,需要保持大写。然后首先在
dataInit
中添加
text transform:uppercase
的设置(参见上文),然后添加

在内联编辑的情况下,没有
beforesmit
回调函数。因此,如果您有远程数据,则可以使用
serializeRowData

serializeRowData: function (postData) {
    postData.name = postData.name.toUpperCase();
    return postData;
}
如果使用
editurl:“clientArray”
可以修复
editRow
saveRow
aftersavefunc
参数中的数据:

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

请参阅。

首先,您可以使用CSS样式
文本转换:大写
以大写显示用户键入的数据:

editoptions: { dataInit: function (el) { $(el).css('text-transform', 'uppercase'); }}
该设置不会更改数据本身。因此,您必须另外进行相应的修改。在进行表单编辑时,您可以在提交前使用
。例如,我们有一个列
“name”
,需要保持大写。然后首先在
dataInit
中添加
text transform:uppercase
的设置(参见上文),然后添加

在内联编辑的情况下,没有
beforesmit
回调函数。因此,如果您有远程数据,则可以使用
serializeRowData

serializeRowData: function (postData) {
    postData.name = postData.name.toUpperCase();
    return postData;
}
如果使用
editurl:“clientArray”
可以修复
editRow
saveRow
aftersavefunc
参数中的数据:

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

请参阅。

谢谢。我希望有一种方法可以在所有编辑模式下为输入元素添加keydown事件处理程序,并在该事件中将小写转换为大写。用户可以在运行时设置大写选项。您的答案要求在提交之前在运行时生成editoptions序列化RowData代码。请确认使用keydown转换是不合理的,所以我可以试试你的答案。或者改为在服务器上实现转换。@安德鲁斯:我不能完全理解你的意思。“在运行时设置大写选项”和“在运行时生成……代码”是什么意思。如果您有用户可以在运行时设置的选项(或变量),则可以在
dataInit
提交之前或
序列化行数据之前测试选项(变量),并激活或不激活大写转换。问题是什么。您还有一个问题“请确认使用keydown转换是不合理的”,我完全无法理解。我不能保证你找不到只使用
keydown
的实现。我更新了关于使用keypress的问题。这是否合理。使用可以为数据库中的列定义设置大写选项。应用程序代码应该检查这个值,并在运行时生成jqgrid定义。这涉及到在使用keypress required时在3个不同的位置生成编码,只添加keypress事件处理程序。若使用ctrl+V命令粘贴文本,则不确定按键处理程序是否有效,但可能在某些输入元素中也可以处理粘贴命令event@Andrus:你测试过你发布的代码吗?在我在纯JavaScript环境中的测试中,它不起作用。我给你发了一个解决问题的方法。如果你能发布另一个可以处理任何键盘事件的代码,我会很感兴趣。我不知道有哪种解决方案可以保留光标插入符号,并且可以动态修改键盘事件。根据参考答案中的代码作者的说法,它应该可以工作。您使用了哪个测试用例?也许我应该问一个纯javascript的问题。有很多可能性:使用您的优秀答案,尝试使用keypress,在C#in服务器中的BeforeSave和beforeSert实体方法中实现这一点,在数据库服务器中创建insert和update触发器。哪种方式最好?谢谢。我希望有一种方法可以在所有编辑模式下为输入元素添加keydown事件处理程序,并在该事件中将小写转换为大写。用户可以在运行时设置大写选项。您的答案要求在提交之前在运行时生成editoptions序列化RowData代码。请确认使用keydown转换是不合理的,所以我可以试试你的答案。或者改为在服务器上实现转换。@安德鲁斯:我不能完全理解你的意思。“在运行时设置大写选项”和“在运行时生成……代码”是什么意思。如果您有用户可以在运行时设置的选项(或变量),则可以在
dataInit
提交之前或
序列化行数据之前测试选项(变量),并激活或不激活大写转换。问题是什么。您还有一个问题“请确认使用keydown转换是不合理的”,我完全无法理解。我不能保证你找不到只使用
keydown
的实现。我更新了关于使用keypress的问题。这是否合理。使用可以为数据库中的列定义设置大写选项。应用程序代码应该检查这个值,并在运行时生成jqgrid定义。这涉及到在使用keypress required时在3个不同的位置生成编码,只添加keypress事件处理程序。我不确定凯普莱斯