2016-09-21 13 views
0

入力フィールドがmaxlengthに等しい場合、入力を自動的に次の入力に変更します。入力フィールドはMottie Keyboardと統合されています。これは可能ですか?私はMottieキーボードで上記のスクリプトを組み合わせると、それは動作しませんMottie Keyboard:入力フィールドがmaxlengthのときにフォーカスを変更

$("input").bind("input", function() { 
     var $this = $(this); 
     setTimeout(function() { 
      if ($this.val().length >= parseInt($this.attr("maxlength"),10)) 
       $this.next("input").focus(); 
     },0); 
    }); 

:仮想キーボードを使用しない場合JSFIDDLE

、それはこのコードを使用するのは簡単です:

はここでDEMOです。

+0

私はあなたが入力フィールドに任意のイベントをバインドしていないと思う。また、時刻が0の場合、 'setTimeout()'関数を呼び出す必要はありません。 – Samir

+0

あなたは私にjsfiddleデモを教えていただけますか? @Samir –

答えて

2

に動作しますか? (demo)あなたが必要なものを達成するためにswitchInput API機能をchangeコールバックを使用して、そこに私の応答を要約する

HTML(例)

<input type="text" /> <!-- max len = 3 --> 
<input type="text" /> <!-- max len = 3 --> 
<input class="last" type="text" /> <!-- max len = 4 --> 

スクリプト

$(function() { 
    $("input").keyboard({ 
    position: { 
     // position under center input 
     of: $("input:eq(1)"), 
     // move down 12px; not sure why it doesn't line up 
     my: 'center top+12', 
     at: 'center top' 
    }, 
    enterNavigation: true, 
    maxLength: 4, 
    layout: 'num', 
    autoAccept: true, 
    usePreview: false, 
    change: function(e, keyboard, el) { 
     var len = keyboard.$el.hasClass("last") ? 4 : 3; 
     if (keyboard.$el.val().length >= len) { 
     // switchInput(goToNext, isAccepted); 
     keyboard.switchInput(true, true); 
     } else if (keyboard.$el.val() === "" && keyboard.last.key === "bksp") { 
     // go to previous if user hits backspace on an empty input 
     keyboard.switchInput(false, true); 
     } 
    } 
    }); 
}); 
+0

私は[デモを更新しました](http://jsfiddle.net/Mottie/MK947/4437/)...それが期待どおりに動作するようにするためのものはほとんどありません。 – Mottie

+0

ありがとう、おじさんありがとう、重複した質問を申し訳ありません:) –

+0

alwaysOpenは使用できませんか? –

0

次のように使用してみてください、希望はこれは私があなたにも、リポジトリ内issueを開いたと思います

$("input").on("focus blur", function() { 
    var $this = $(this), 
     value = $this.val(), 
     maxLength = $this.attr("maxlength"); 
    if (value.length >= maxLength ){ 
     $this.next("input").focus(); 
    }  
}); 
+0

うまくいかない –

+0

'focus blur'メソッドを使ってみてください。 – Samir

+0

私は 'focus&blur'に変更しましたが、それは同じです –

関連する問題