Javascript 如何在jqgrid中实现大写转换
Producr代码只能包含大写字符。如果输入小写字符,jqgrid不会将其转换为大写,则没有此类选项。 如何在文本字段的内联和表单编辑模式下强制jqgrid中输入字符的大写转换 更新 我在最后一个答案中找到了密码。此代码更改按键时输入的大写字符。通过向jqgrid编辑控件添加keyprees事件处理程序来使用它是否合理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 =
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事件处理程序。我不确定凯普莱斯