1

ダイアログで入力テキスト フィールドをマスクしたいのですが、primefaces 3.5 SNAPSHOT を使用しています。マスク内に番号 10 を含めたい場合を除いて、以下は私にとってはうまく機能します。

  <p:dialog id="inputDlg" modal="true" widgetVar="inputDlgWV">
     <p:inputMask id="ageInput" mask="9" placeHolder=" " value="#{bean.age}"/>
  </p:dialog>

f:validateRegexをパターンで試してみました。正しく検証されますが、入力がマスクされません。私の主な目標は、マスクして 0 ~ 10 の数字のみを許可することです。ご協力いただきありがとうございます。

4

1 に答える 1

2

Primefaces のコンポーネントのベースとなっているMasked Input Plugin for jQueryによると、このプロパティは、数字、文字、2 つのいずれか、オプションのユーザー入力、その他すべてを定義済みテキストとして受け入れます。<p:inputMask>mask9a*?

この観点から、希望する属性は になりますmask="9?9"。もちろん、0 ~ 99 の範囲の数字を受け入れます。keydown厳密な 0 ~ 10 の範囲が必要な場合は、次のようなイベントの追加ハンドラーをバインドする必要があります。

$(document).ready(function() {
    $("#input-mask").keydown(function(e) {
        var key = (e.keyCode ? e.keyCode : e.which);
        if (!((key == 46) || (key == 8))) {
            if ((key < 48) || (key > 57)) {
                event.preventDefault();
            } else {
                var s = $(this).val();
                var l = s.length;
                if((l >= 2) || ((l == 1) && !((s == '1') && (key == 48)))) {
                    event.preventDefault();
                }
            }
        }
    });
});

私の好みでは、これはユーザーフレンドリーではなく、あなたの代わりに私が選んだでしょう<p:spinner>.

于 2013-03-20T18:37:02.280 に答える