jqgrid检索单元格的数据并对其进行操作

我想从dataEvents事件中检索用户输入的值。 我想只允许数字0-24,如果用户插入一个像4,5(德语写作)的数字,我想用“。”替换“,”。 因此将“4,5”转换为“4.5”。

但我正在努力获取用户输入的数据。 我正在使用的方法总是返回空白。

 colModel:[ {name:'sum',index:'sum', width:45, editable: true, sortable:false, editoptions: { dataEvents: [ { type: 'keypress', // keydown fn: function(e) { // console.log('keypress'); var v=$(e.target).text(); alert(v); // v is empty. //reset the target value, actually I want to replace // enter code here a comma with a point // only allow the numbers 0 - 24 } } ] } }, ], 

您可以将’,’替换为’。’ 使用以下内容更好地在’keyup’事件处理程序内部

 $(this).val($(this).val().replace(/,/,'.')); 

因此,您可以使用以下dataEvents

 dataEvents: [ { type: 'keyup', fn: function(e) { var oldVal = $(this).val(); var newVal = oldVal.replace(/,/,'.'); if (oldVal !== newVal) { $(this).val(newVal); } } }, { type: 'keypress', fn: function(e) { var key = e.charCode || e.keyCode; // to support all browsers if((key < 48 || key > 57) && // if non digit key !== 46 && key !== 44 && key !== 8 && // and not . or , or backspace key !== 37 && key !== 39) { // arrow left and arrow right return false; } } } ] 

在以下演示中,您可以实时查看结果。 我在示例中看到的唯一缺点如下:如果您尝试在文本中间键入逗号,则在替换逗号指向后,光标位置(插入符号)将更改为输入的结尾。 在你的情况下,这可能不是一个真正的问题。 你确实想要保存光标位置,你可能应该使用IE或.selectionStart.selectionEnd for Firefox进行此document.selection

更新 :我在Firefox中使用e.keyCode事件中的e.keyCode修复了问题。 我从这里得到的信息现在使用e.charCode || e.keyCode e.charCode || e.keyCode而不是e.keyCode 。 上面的代码和演示现在已修复。