36

私はdigitalbush masked input jQuery pluginを使用しています。Web ブラウザーと iPhone ブラウザーでは問題なく動作しますが、Android モバイル デバイスでは動作しません。

私の問題: マスクは入力フィールド_ - _ - ___ にあります。

数字を入力すると、12345685555___- -

例: http://rossbender.com/temp/mask.html

助言がありますか?どうすればこれを解決できますか?

ありがとうプラサド。

4

9 に答える 9

48

私はこの問題を 3 つのアクションで解決し、すべての Android 4.0 以降の携帯電話でこれを修正しました。

  1. masked-input を少なくともバージョン1.4に更新する
  2. 入力に追加type="tel"して、数字キーボードをトリガーします
  3. 入力のmaxlength属性を削除するか、 のように、キャレット アクションを妨げない値に設定します20
于 2015-04-03T18:09:32.770 に答える
8

Jonathan Rowny が言及した raw スクリプトを使用してみましたが、S3 - Chrome ブラウザーでも同じ問題が発生していました。type="tel"入力および/またはと関係があると思いますtype="number"。結局、別のプラグインを使用する必要がありました。http://igorescobar.github.io/jQuery-Mask-Plugin/

jquery-mask ( jquery-masked-inputと混同しないでください) は非常に似ていますが、構文が少し異なります。これがこの問題で他の誰かに役立つことを願っています。

jquery-masked-input 構文: $("#phone").mask("(999) 999-9999");

VS

jquery マスク構文:('#phone').mask('(000) 000-0000');

于 2014-10-20T19:52:16.847 に答える
0

Tony Brasunas の受け入れられた回答をさらに強化するには、ポイント番号 3 の jquery.maskedinput.js に次のスニペットを追加して、maxlength を動的に増やし、キャレット アクションを妨げないようにします。

入力の maxlength 属性を削除するか、20 などのキャレット アクションを妨げない値に設定します。

    defs = $.mask.definitions;
    tests = [];
    partialPosition = len = mask.length;
    firstNonMaskPos = null;

    //insert snippet below
    if (chrome && android) {
        console.log("chrome && android");
        var allAllowedRegExps = '';
        jQuery.each(defs, function (key, value) {
            allAllowedRegExps = allAllowedRegExps + key;
        });
        allAllowedRegExps = allAllowedRegExps.replace(/\[/g, '');
        allAllowedRegExps = allAllowedRegExps.replace(/\]/g, '');
        allAllowedRegExps = '[^' + allAllowedRegExps + ']';
        var re = new RegExp(allAllowedRegExps, "g");
        var actual = mask;
        var replacedVal = actual.replace(re, "");
        var actualValue = actual.length - replacedVal.length;
        if ($(this).attr('maxlength') !== undefined) {
            $(this).attr('maxlength', parseInt(this.attr('maxlength')) + parseInt(actualValue));
        }
   }

    mask = String(mask);
于 2020-01-29T13:10:27.173 に答える