web-dev-qa-db-ja.com

エラー時にフィールドをクリアしないjqueryマスク入力プラグイン

私は http://digitalbush.com/projects/masked-input-plugin/ を見ています

私はこのように呼んでいます:

$(control).mask('999-999-9999');

そして、何かが間違っている場合、ユーザーの入力を破棄したくありません。彼らは終わっていない

[407-555-____]

これだけ入力した後にフィールドを離れると、クリアされます。後で終了できるように、そのままにしておきます。

私はjQueryを初めて使用し、彼のソースを調べましたが、それを行う方法を見つけることができません。目。

30
McKay

マスク全体をオプションにする必要があるようです:

mask('?999-999-9999')

そうすれば、コントロールはユーザーが持っているものを「有効」と見なし、続行できます。マスクの実際のオプション部分ではありませんが。

45
McKay

Autoclearオプションをfalseに設定します。

$(control).mask('999-999-9999', {autoclear: false});
52
Angela Nicholas

適切に解決するには、input.val("");関数のステートメントcheckVal()を削除する必要があります。

縮小版を使用している場合は、ステートメントを検索して削除する必要があります。

if(!a&&c+1<i)f.val(""),t(0,k);else
2
Ahmet Polat

CheckVal()でinput.val( "")を削除することに加えて、clearBufferへの呼び出しを変更することもできます。元のコードでは:clearBuffer(0、len);すべてのユーザー入力を削除します。これをclearBuffer(lastMatch + 1、len)に変更すると、ユーザー入力が表示され、続いて正しい入力を完了するために必要なマスクプレースホルダーが表示されます。

また、.bindにユーザーメッセージを追加しました。正確に1種類の入力にMaskedInputを使用しているため、これは機能します。位置7より先に進んでいる入力があるかどうかを確認しています。これは、ユーザー入力が開始される場所だからです。

ここに私がやったことがあります:

.bind("blur.mask", function() {
    // find out at which position the checkVal took place
    var pos = checkVal();
    // if there was no input, ignore
    if (pos <=7) {input.val(""); clearBuffer(0, len);}  
    // if the user started to input something, which is not complete, issue an alert
    if (pos > 7 && pos < partialPosition) alert("Tell the user what he needs to do.");
    if (input.val() != focusText)
    input.change();
})
0
user2220787

更新ファイルjquery.maskedinput.jsを試してください

関数では、checkVal(allow)関数でtrueのパラメーターallowを設定します。私の助け。

 function checkVal(allow) {
                    allow = true; ///add this command
//..............
}
0
Pepa

プレースホルダーを追加すると、問題を解決できます。

$(control).mask('999-999-9999');

空のプレースホルダーをマスクに追加します。下記参照

$(control).mask('999-999-9999', { placeholder: "" });

デフォルトでは、入力テキストフィールドの_を置き換えます。入力の長さが動的で固定されていない場合、ボットは_のままになります。

0