在Android设备上Javascript处理文本框输入的奇怪行为

问题描述 投票:0回答:2

我在Android设备上看到Javascript的奇怪行为。我想要一个行为非常像密码字段的HTML文本框 - 当用户输入时,字符会被遮盖。我已将代码缩减为单行。在我的电脑,iPhone和iPad上运行良好。但不是我的Moto手机或三星平板电脑,两者都在运行Android。

  <input type='text' ID='txtPseudoPassword' name='txtPseudoPassword' onkeydown = 'if (event.keyCode != 8 && event.keyCode != 46) { document.getElementById("txtPseudoPassword").value += "#"; return false; } else return true; ' >

我尝试过使用event.preventDefault();以及return false;,但它没有任何区别。我尝试过onkeypress而不是onkeydown,但类似地,已经工作的设备继续这样做而Android设备没有。

所以如果我在iPad上键入'ABC',我会看到'###'。如果我将其输入任意一个Android设备,我会得到'#A#AB#ABC'。

另一个例子可能会有所帮助(至少在排除“使用密码字段”时)。走这条路

<input type='text' ID='txtPseudoPassword' name='txtPseudoPassword' onkeydown = 'if (event.keyCode != 8 && event.keyCode != 46) { document.getElementById("txtPseudoPassword").value += String.fromCharCode(event.keyCode) + String.fromCharCode(event.keyCode) ; return false; } else return true; ' >

在非Android上,它会使输入的任何字符加倍。在Android上,好吧..试试吧,看看

javascript android html textbox
2个回答
0
投票
// change this
<input type="text" ...
// to this
<input type="password" ...

密码行为有时通过检测其他输入属性中的字符串password而自动化,但是在输入类型属性中直接精确它更安全且更跨平台。


0
投票

好吧,以防万一它可以帮助任何人,问题似乎是Android没有正确处理击键(keyCode on android is always 229),而解决方案(希望)是使用不同类型的控件和contenteditable属性集。沿着这些方向的东西

<p contenteditable ID='pPseudoTextField' name='pPseudoTextField' style='border-style: solid; border-width: 1px; height:20px; width: 150px;' oninput = 'document.getElementById("hdnCounter").value = parseInt(document.getElementById("hdnCounter").value) + 1; document.getElementById("pPseudoTextField").innerHTML = "#".repeat(document.getElementById("hdnCounter").value)'></p>

© www.soinside.com 2019 - 2024. All rights reserved.