我想从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
}
}
]
}
},
],
Run Code Online (Sandbox Code Playgroud)
您可以将','替换为'.' 使用以下内容更好地在'keyup'事件处理程序内部
$(this).val($(this).val().replace(/,/,'.'));
Run Code Online (Sandbox Code Playgroud)
所以你可以使用以下 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;
}
}
}
]
Run Code Online (Sandbox Code Playgroud)
在以下演示中,您可以实时查看结果.我在示例中看到的唯一缺点如下:如果您尝试在文本中间键入逗号,则在替换逗号指向后,光标位置(插入符号)将更改为输入的结尾.在你的情况下,这可能不是一个真正的问题.它你要保存的光标位置,你可能应该这样做
document.selection使用IE或.selectionStart与.selectionEnd适用于Firefox.
更新:我在Firefox中使用事件e.keyCode内部修复了问题keypress.我从这里跟踪信息,现在使用e.charCode || e.keyCode而不是e.keyCode.上面的代码和演示现在已修复.
| 归档时间: |
|
| 查看次数: |
7820 次 |
| 最近记录: |