我需要在sencha extjs 6中使用numberfield,但默认情况下numberfield允许十进制输入。我的应用程序不是必需的十进制输入我试过allowDecimals: false,
它可能在textfield上工作。是否有任何配置或方法来禁用输入?
注意:在PC中我可以编写防止它的方法,但我的应用程序在 移动设备 上运行,因此,我不知道它。谢谢。
答案 0 :(得分:2)
我强烈建议您在这种情况下使用numberfield。当然,这将接受桌面浏览器中的所有字符。但是你会发现这只能通过显示数字键盘接受手机中的号码。
Sencha Touch框架的现代版本不提供小数精度参数......但是有一种方法可以解决这个问题。只需在设置数字字段的值之前放置这些行。
Ext.form.Number.override ({
applyValue : function(value){
var minValue = this.getMinValue(),
maxValue = this.getMaxValue();
if (Ext.isNumber(minValue) && Ext.isNumber(value)) {
value = Math.max(value, minValue);
}
if (Ext.isNumber(maxValue) && Ext.isNumber(value)) {
value = Math.min(value, maxValue);
}
value = parseFloat(value).toFixed(0); // where 0 is your decimal precision value
return (isNaN(value)) ? '' : value;
}
});
在此示例中,您可以看到实现:
Ext.application({
name: 'Fiddle',
launch: function () {
Ext.form.Number.override({
applyValue: function (value) {
var minValue = this.getMinValue(),
maxValue = this.getMaxValue();
if (Ext.isNumber(minValue) && Ext.isNumber(value)) {
value = Math.max(value, minValue);
}
if (Ext.isNumber(maxValue) && Ext.isNumber(value)) {
value = Math.min(value, maxValue);
}
value = parseFloat(value).toFixed(0); // where 0 is your decimal precision value
return (isNaN(value)) ? '' : value;
}
});
Ext.create({
xtype: 'window',
width: 200,
height: 200,
items: [{
xtype: 'numberfield'
}]
}).show();
}
});