2017-08-30 8 views
1

これは良い方法です。基本的には、私が望むものを得るために特に2つのライブラリを使用しています。私が使用Bootstrap SelectがJQuery仮想キーボードと衝突する

https://mottie.github.io/Keyboard/

(誰かが自分のもののために有用見つけた場合には、リンクを追加しました)

理由を選択bootstral:

https://silviomoreto.github.io/bootstrap-select/

とjQuery仮想キーボード:選択ブートストラップ選択グループとして表示される照会されたデータは非常に大きいので、入力フィールドユーティリティを追加してユーザにとってよりシンプルにすることが理にかなっています。また、jqueryプラグインを追加しているのはまさにその理由です。問題は、セレクト入力をタッチしてキーボードが出たときに、入力したものがフィルタリングされないことです。

:NOR追加、キーボードはこれまでの形の最も簡単でのみ、通常の入力テキストフィールドに

を動作するように見えるが、これは私がキーボードを生成するだけでなく、選択ピッカーを初期化するために使用していたコードです

let virtualK =()=> { 
    $('.buscame') 
      .keyboard({ 
      layout: 'qwerty', 
      position: { 
       of : $(window), 
       my : 'center bottom', 
       at : 'center bottom', 
       at2: 'center bottom' 
      } 
      }) 
      .addTyping(); 
    } 
    $(document).ready(function(){ 
    $('#example').selectpicker({}); 
    $('#Transfer').selectpicker({}); 
    $('#Chofer').selectpicker({}); 
    $('#Transportista').selectpicker({}); 
    $('#localidad').selectpicker({}); 
    $('#Cliente').selectpicker({}); 

    // Initialize the keyboard 
    virtualK(); 
    }); 

selectタグ用として、コードは次のように読み取ります:私は直面しています

<select name="Transfer" size="1" id="Transfer" class="form-control select-picker buscame" data-live-search="true" required onChange="javascript:OnChangeOperador()"> 

もう一つの問題は、私が識別子として.buscameを渡すことにより、JSコードを実行しようとする場合、キーボードがないということです表示、私がを選択した場合wheras一般的な識別子としてinputが動作します。ブートストラップ選択のドキュメントには、自動的に生成された入力ボックスのIDを追加する方法が表示されないので、オプションではないようです(他の人が教えてくれると分かりません)

カスタムキーボードの内側の検索ボックスで仮想キーボードを動作させますか?または、生成された入力フィルタフィールドにIDを追加する方法は?

EDIT:

私は

let virtualK =()=> { 
    $('input[role="textbox"]') 
      .keyboard({ 
      layout: 'qwerty', 
      position: { 
       of : $(window), 
       my : 'center bottom', 
       at : 'center bottom', 
       at2: 'center bottom' 
      } 
      }) 
      .addTyping(); 
    } 

を使用してみました。しかし、それは同じことを、仮想キーボードが開きますが、何でも、私は入力してフィルタ処理されません。

はjsfiddleとjsbinが面白いされていたので、私はしばらく時間がかかったが、ここでは、この問題のレクリエーションです:

https://codepen.io/AlecX4/pen/vJvmLb?editors=0000

+0

は私が – Dekel

+0

@Dekelをjsfiddle /スニペットを追加し、それを追加しました!申し訳ありませんが、それほど時間がかかりました。 –

+1

@Dekelをそれを書いて終了させ、確実に作業例として –

答えて

2

あなたは、関連する入力の値を設定するとのpropertychangeをトリガーする必要があります。その入力は、入力の値が変更されたことをbootstrap-selectに伝えるために入力します。ここで

change: function(e, keyboard) { 
    keyboard.$el.val(keyboard.$preview.val()) 
    keyboard.$el.trigger('propertychange')   
    } 

はあなたのcodepenの更新です:
https://codepen.io/anon/pen/EvGpvz

+0

ありがとうDekel、魅力的なように働いた。私は、変更機能とそれがどのように機能するかについてのドキュメントを読んでいますが、あなたがこれにどのように接続しているか見ることができません。意味が分かるまで定義を凝視していくつもりです。その後、お時間をいただきありがとうございました。 –

+1

あなたが理解していないコードのどの部分を知っているか教えてください:) – Dekel

+0

たとえば、変更に関するドキュメントでは、キーボードの操作ごとに変更コールバックが呼び出され、usePreviewオプションの設定は行われません。私が集めることのできるusePreviewは、どの入力フィールドが開いている(正しい?)キーボードに応じて変わります。$ elはキーボード入力jqueryオブジェクトを参照していますので、valをキーボードに設定すると$ preview.val()値を集中入力に変更しますか?私はコードを手に入れます。何かがあれば、あなたが私がこれをすばやく解決するのを助けるために必要なものを見つけ出す方法に驚いています! –

関連する問題