Javascript Chrome设备仿真器中的Ext js Numberfield允许类型;";(指数)

Javascript Chrome设备仿真器中的Ext js Numberfield允许类型;";(指数),javascript,extjs,Javascript,Extjs,我对Ext JS number字段有问题。 在google chrome emulator中使用设备时,允许在数字字段组件中键入字母“e” 复制行为的步骤: 在这把小提琴中输入: 按F12打开检查模式 单击设备图标以更改为设备模式 单击以再次运行小提琴 在数字字段组件中键入字母“e” 验证是否可以在设备模式下通知字母“e” 你们见过这个问题吗 谢谢, Renato Carvalho。您可以使用以下肮脏的黑客: Ext.create('Ext.form.Panel', { renderTo

我对Ext JS number字段有问题。 在google chrome emulator中使用设备时,允许在数字字段组件中键入字母“e”

复制行为的步骤:

  • 在这把小提琴中输入:
  • 按F12打开检查模式
  • 单击设备图标以更改为设备模式
  • 单击以再次运行小提琴
  • 在数字字段组件中键入字母“e”
  • 验证是否可以在设备模式下通知字母“e”
  • 你们见过这个问题吗

    谢谢,
    Renato Carvalho。

    您可以使用以下肮脏的黑客:

    Ext.create('Ext.form.Panel', {
        renderTo: document.body,
        items: [{
            xtype: 'numberfield',
            label: 'Decimal number',
            decimals: 2,
            decimalSeparator: ',',
            labelAlign: 'top',
            name: 'age',
            //inputType: 'number', // Instead of "click on the Device icon"
            // Our dirty hack/workaround 
            listeners: {
                keydown: function(cmp, e) {
                    if(e.key() === 'e') {
                        e.stopEvent()
                    }
                }
            }
        }]
    });
    
    或者你可以使用inputType:“text”并过滤输入,但这是一种更脏的方式。。无论如何,如果你找不到更优雅的东西,你可以使用这个肮脏的黑客

    另一个解决方案:

    <input type="number" onkeydown="javascript: return event.keyCode === 8 || event.keyCode === 46 ? true : !isNaN(Number(event.key))">
    
    
    
    这是指数表示法,例如1.2E10谢谢Arthur!有什么办法可以防止吗?这只是在设备模式下发生的。我在sencha文档中发现了这个属性“allowExponential”,但它只适用于经典工具包,我们使用的是现代工具包。谢谢您的时间!我会尝试这种方法!谢谢,亚瑟,这对我们有用。给我发一个捐款链接,我想为你帮助我们的所有时间付你一杯啤酒!Hehehei使用BrowserStack应用程序和快捷键键盘进行了测试,对于这个特定场景,我们仍然存在问题。似乎无法识别键值。可能我需要使用另一种解决方案。如果我发现了我在这里发布的东西。谢谢你看看第二个解决方案。亚瑟,它现在起作用了。我使用了混合解决方案。基本上,对于普通键盘,我使用onKeyDown事件保留了第一个解决方案。仅针对快捷键键盘场景,我使用了以下函数:
    oninput=“this.value=this.value.replace(/[^0-9]/g');“