我正在将backbone,marionette
用于我的应用程序。我对desktop and mobile
使用相同的代码但keypress
使用的mobile
无效。我为mobile
创建了Jsfiddle测试
如果您在desktop
事件未触发的情况下打开此链接,如果您在{{1}}中打开它就会触发。如何解决此问题。
任何人都可以帮助我。
感谢。
答案 0 :(得分:8)
Chrome移动版暂时不支持正确的按键事件。这有一个长期存在的错误:
https://code.google.com/p/chromium/issues/detail?id=118639
我认为应该在第38版修复。
答案 1 :(得分:5)
我会在输入框上建议两个事件。
这适用于桌面网络浏览器。
1)onkeypress = return isNumberKey(event);
function isNumberKey(e)
{
var evt = e || window.event;
if(evt)
{
var charCode = evt.keyCode || evt.which;
}
else
{
return true;
}
if((charCode > 47 && charCode < 58) || charCode == 9 || charCode == 8 || charCode ==46 || charCode ==37 || charCode==39)
{
return true;
}
return false;
}
这适用于移动设备
2)onkeyup="numberMobile(event);"
function numberMobile(e){
e.target.value = e.target.value.replace(/[^\d]/g,'');
return false;
}
在输入框中应用这两个事件并且它将起作用。唯一的缺点是,它使它变慢。但是现在我们必须忍受它。
这个解决方案有一个问题。左侧导航无效。我会尽快更新更合适的解决方案。
答案 2 :(得分:1)
在browserstack上测试。似乎对我有用。 这是指向您的要点的链接:
您能否知道您测试的具体andriod设备和浏览器。
答案 3 :(得分:1)
最后我发现了一个问题,但它在opera中不起作用。而不是编写数字字段的代码。我只是在html文件中的输入字段中添加了一个属性type ='number'。现在只有数字小键盘即将到来那么它满足了我的要求。这是JsFiddle
html代码:
<input type='number'/>
答案 4 :(得分:1)
以我的经验,我想分享我的知识,
台式机浏览器
<input type="number">
<input type="text">
<input type="tel">
Android移动浏览器(Chrome)
<input type="number">
<input type="text">
<input type="tel">
注意: 为了检测我使用的光标位置,
let caretPos = e.target.selectionStart
让我知道,有什么方法可以检测 input [type =“ number”] 中的光标位置。
建议
对于桌面浏览器,请使用 input [type =“ text”] 处理诸如按键事件之类的情况,并使用光标位置替换某些值。
对于Android浏览器,使用 input [type =“ tel”] 处理上述相同情况。
答案 5 :(得分:0)
似乎已不推荐使用SELECT TAX.NAME tax, SUM((ITEM.COST) * (ITEM.AMOUNT)) total FROM INVOICES inv
INNER JOIN INVOICEITEMS item ON INV.ID = ITEM.INVOICE
INNER JOIN TAXES tax ON ITEM.TAX_ID = TAX.ID
WHERE INV.ID = 1
GROUP BY TAX.ID
事件(请参阅https://developer.mozilla.org/en-US/docs/Web/Events/keypress),最好现在使用keypress
事件,然后再支持所有浏览器。