1

入力テキストボックスのキーアップイベントから取得している入力があります。

$(selector).keyup(function(){
  var str = $(this).val();
  var X = 2;
  var Y = 1;
  $(this).val(str.substring(X,Y));
});

標準の webapp で見ると、$(this).val()には新しく押されたキーがありません。代わりに、ライフサイクルのどの部分を確認する必要がありますか? Webアプリで実行すると、計画どおりに実行されるようですが、iOS Webビュー/モバイルアプリでこれを使用するとそうではありません

編集:

実際には、これらのリスナーのライフサイクルに違いがあるようです。keyup を実行すると、$(this).val()が古いコンテンツと新しい文字として認識されますが、モバイル デバイスでは古いコンテンツのみが認識されます。新しいキャラクターは次の方法で簡単に取得できます。

String.fromCharCode(event.which)

しかし、ライフサイクルのその時点では、それを削除しないとは言えません。event.preventDefault();のようなことを行うだけでなく、おそらく他のイベントに結び付けるという考えを調べていました。またはevent.stopPropagation(); しかし、私はどこに行くべきか確信が持てませんでした。

この種のイベントまたはリスナーをどのように処理および処理するかについてのアイデアは素晴らしいでしょう。私の現在のロジックでは、新しいコンテンツ セットがある場合に必要です。おそらく単純な on("input") で十分でしょうか?

ガイダンスは高く評価されています。:)

4

1 に答える 1

0

keyup() のページの Jquery ドキュメント:

実際のテキスト入力をキャッチするには、.keypress() の方が適している場合があります。

コーディングの問題を解決する:

1) イベントを keyup から keypress に変更します。2) 以下を実行します。

var reg = new RegExp("\\D");
if(reg.test(String.fromCharCode(event.which))){
  var str = $(this).val();
  var strArr = str.split("");
  // for handling when people maintain the press, 
  //    i created a range array to delete the range.
  strArr.splice(cRange[0], cRange[1]-cRange[0]+1); 
  str = strArr.join("");
  $(this).val(str);
  event.preventDefault();
}
于 2013-03-11T13:14:36.983 に答える