【问题标题】:Key press event of html is not working in mobile deviceshtml的按键事件在移动设备中不起作用
【发布时间】:2016-11-24 06:41:13
【问题描述】:

function keyDown()
{
alert("KeydownEvent Fired");
}
function keypress()
{
alert("keypress Event Fired")
}
function keyup()
{
alert("key up event fired");
}
function onlyAlphabets(e) {
                debugger;
                try {
                    if (window.event) {
                        var charCode = window.event.keyCode;
                    }
                    else if (e) {
                        var charCode = e.which;
                    }
                    else { return true; }
                    var keyCodes = [13, 16, 18, 19, 20, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 91, 92, 93, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 96, 97, 98, 99,
                                    100, 101, 102, 103, 104, 105, 144, 145];
                    if (keyCodes.indexOf(charCode) != -1) {
                        return false;
                    }
                    else if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || charCode == 8 || charCode == 32 || charCode == 9 || charCode == 46 || charCode == 37 || charCode == 39 || charCode == 16 || charCode == 17)
                        return true;
                    else
                        return false;
                }
                catch (err) {
                    alert(err.Description);
                }
            }
<input type="textbox" placeholder="Keydown" onkeydown="return onlyAlphabets(event,this);"></input>
</br>
<input type="textbox" placeholder="Keypress" onkeypress="keypress()"></input>
</br>
<input type="textbox" placeholder="Keyup" onkeyup="keyup()"></input>
</br>

这只是一段代码。

我已经包含了一些输入标签,它们都有不同的按键事件,然后我将它上传到现场,它在所有浏览器中都可以正常工作, 但是当我尝试在手机或平板电脑中打开我的页面时,它无法正常工作。

即使警报在浏览器中有效,但我在 keydown 上保留了对名字的验证,用户只能输入字母(不允许数字和特殊字符)

【问题讨论】:

标签: javascript c# android html dom-events


【解决方案1】:

在移动浏览器中onkeydownonkeyup 都可以使用。我认为你有可能是问题的简单语法错误

在您的手机中查看此fiddle。除了onkeypress,还有 2 个事件正在触发

演示:-

<script>
function keyDown()
{
alert("KeydownEvent Fired");
}
function keypress()
{
alert("keypress Event Fired")
}
function keyup()
{
alert("key up event fired");
}
</script>
<input type="textbox" placeholder="Keydown" onkeydown="keyDown()"/>
<br/>
<input type="textbox" placeholder="Keypress" onkeypress="keypress()"/>
<br/>
<input type="textbox" placeholder="Keyup" onkeyup="keyup()"/>
<br/>

编辑:-

要添加验证您必须在onkeydown 中处理。查看fiddle了解详情

【讨论】:

  • 事件可以被触发,但你能帮我验证吗,这意味着我必须限制用户输入任何数值或特殊字符,它不起作用
  • 请在您的 android 设备中打开相同的小提琴链接并检查.. 它不工作(我正在使用 ANDROID-Chrome 浏览器)
  • 对于不同的问题不要编辑它。尝试发布另一个问题。我们在这里为您提供帮助。
【解决方案2】:

android 验证的最佳解决方案是使用 keyup 函数并使用正则表达式验证代码如下(此正则表达式只允许字母),注意 android 不支持 preventDefault();方法

$( "#textbox" ).on("keyup", function(e) {
                         var inVal=" ";
              inVal=$(this).val();
            var regex = new RegExp(/^[a-zA-Z ]+$/);

          if(!(regex.test(inVal)||$(this).IsNumeric) ){
                 $(this).val($(this).val().replace(/[^a-zA-z\s]/gi, ''))

        }
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2018-01-06
    相关资源
    最近更新 更多