cordova HTML输入:默认情况下强制使用数字键盘,但允许使用字母

4zcjmb1e  于 2022-11-15  发布在  其他
关注(0)|答案(3)|浏览(175)

我有一个HTML输入。输入是在网页上,这是在Chrome中打开的Android手机。
我希望有一个选项,让用户看到一个数字键盘时,他开始输入的值。但在同一时刻,我希望他有可能输入字母数字字符。

  • 我不能使用type="number",因为它不允许输入字母。
  • 我不能使用type="text",因为它默认打开字母键盘,用户必须切换到数字键盘。

因此,我试图找到的选项是当标准的字母数字键盘打开,但数字输入已经选定(就像当你按下标准键盘上的123)。
我试过使用type=“tel”,但我不明白如何从数字切换到字母。
我使用 cordova ,所以如果没有选择这样做使用HTML我可以使用本地插件,如果你建议我任何一个。
我使用cordova,所以如果没有HTML的方式来做的事情,我准备集成任何类型的插件,如果你可以建议我任何人。
这就是我想看到的默认键盘布局。可以吗?

tp5buhyn

tp5buhyn1#

你可能想看看这个:https://css-tricks.com/finger-friendly-numerical-inputs-with-inputmode/

<input inputmode="numeric" pattern="[0-9]*" type="text" name="creditcard">

inputmode将在最新的Android浏览器上工作,pattern是iOS的黑客。特别注意他们谈论iOS不允许用户更换键盘的文章。
希望能有所帮助。

im9ewurl

im9ewurl2#

使用JavaScript解决问题的完整解决方案。
诀窍是创建第二个数字输入,使用css将其覆盖在文本输入之上。

<style type="text/css">
    /* hide number spinners on inputs */
    input::-webkit-outer-spin-button,
    input::-webkit-inner-spin-button {
        -webkit-appearance: none;
        margin: 0;
    }
    input[type=number] {
        -moz-appearance:textfield; /* Firefox */
    }
    .hidden-number {
        margin-top: -26px;
    }
</style>

<form method="post" action="submit.php">
    <input class="form-control" type="text" name="input_name">
    <input class="form-control hidden-number" type="number" id="input_name">
</form>

使用JavaScript,当你的数字输入获得焦点时,它将触发你想要的键盘。然后你必须删除type='number'属性,这将阻止你输入除数字以外的任何内容。然后将文本输入中的任何内容转移到数字输入。最后,当数字输入失去焦点时,将其内容转移回文本输入并替换其type='number'属性。

<script type="text/javascript">
    $(".hidden-number").on("focus", function(){
        $(this).removeAttr("type");
        var text_input = $("input[name="+this.id+"]");
        $(this).val(text_input.val());
        text_input.val("");
    });

    $(".hidden-number").on("focusout", function(){
        var text_input = $("input[name="+this.id+"]");
        text_input.val($(this).val());
        $(this).attr("type", "number");
    });
</script>
dzjeubhm

dzjeubhm3#

您不能这样做,因为提供给用户的键盘布局是基于您的输入的输入类型的。当用户实际上可以输入字母数字字符时,向用户显示数字小键盘将是一个糟糕的UI原则。电话输入类型不允许您将键盘更改为数字键盘,因为它是专门设计为只接受电话号码的。
所以如果你想让用户在你的输入中输入字母数字字符,你不应该把键盘设置成数字键盘。请看下面的例子:

<input type="text" name="valText"/>

另一方面,如果您希望用户只输入数字字符,则应将输入类型设置为数字,如下所示:

<input type="number" name="valNumber"/>

解决方法是创建多个输入,并将其类型设置为您希望用户在特定字段中输入的任何类型。然后,您可以将它们连接为单个值,以这种方式保存它们。但是,您需要将它们保存为包含字符和数字的连接字符串。
您也可以查看here链接,检查您可以使用的不同输入类型,以防您发现其中一种类型对您更有用。但您必须记住的是,输入类型将定义键盘布局。您也可以查看this以获得更好的理解。

相关问题