web-dev-qa-db-ja.com

jQuery MaskedInput unmask()関数を正しく機能させるにはどうすればよいですか?

ページにデフォルトで米国の電話番号マスクを設定したい入力を1つ作成しようとしています。エンドユーザーが国際電話番号を入力することを指定するチェックボックスをクリックした場合、マスクを削除してください。

私は複数の方法を試しましたが、これまでのところ成功していません。現在のプロジェクトでは、jQueryを使用して完全に異なる入力を非表示/表示しています。しかし、私はそのオプションが好きではなく、より合理化されたアプローチを望んでいます。

私は以下を使用しています:

jQuery 1.4.1(まもなく1.4.2にアップグレード予定)およびjQuery.MaskedInput-1.2.2

<script type="text/javascript">
$(document).ready(function($) {
  if ($("#InternationalOfficePhone").attr('checked') == false) {
    $("#OfficePhone").mask("(999) 999-9999? x99999");
  }
});

$("#InternationalOfficePhone").click(function() {
  if ($("#InternationalOfficePhone").attr('checked') == true) {
    //$("#OfficePhone").mask(); //doesn't work
    //$("#OfficePhone").unmask(); //doesn't work
    $("#OfficePhone").unmask("(999) 999-9999? x99999"); //doesn't work
  } else {
    $("#OfficePhone").mask("(999) 999-9999? x99999");
  }
});
</script>

上記のコードはデフォルトのマスクを設定するために適切に機能しますが、InternationalOfficePhoneのクリックイベントで何を試しても、マスクは削除されません。

どんな助けでも大歓迎です。

15
Terry Nederveld

私はそれを機能させるためにコードを理解することができました。以下は、私が現在使用しているコードです。

<script type="text/javascript">
$(function($) {
  $("#OfficePhone").mask("(999) 999-9999? x99999");
  $("#InternationalOfficePhone").click(function() {
    var mask = "(999) 999-9999? x99999";
    if ($("#InternationalOfficePhone").is(':checked')) {
      $("#OfficePhone").unmask(mask);
    } else {
      $("#OfficePhone").mask(mask);
    }
  });
});
</script>
18
Terry Nederveld

パラメータをunmask関数に渡す必要はありません!パラメータなしで使用すると、うまく機能します。

$("#OfficePhone").unmask();
24
Diego Mendes

私は同じ問題を経験し、私を助けたのは:

    var maskedInput = $("#id").data('mask');
    if (maskedInput) {
        maskedInput.remove();
    }
3
Agni

attrチェックの代わりに_:checked_を使用してみてください、それが問題だと思います。つまり、if条件で$('#InternationalOfficePhone').is(':checked')を使用します。

2
Teja Kantamneni

入力マスクを削除します。

$(selector).inputmask('remove');

または

var input = document.getElementById(selector);
if (input.inputmask)
  input.inputmask.remove()

または

Inputmask.remove(document.getElementById(selector));
1
EngineerCoder

私はquery.maskedinput.jsバージョンを使用しています:1.4.1参照しました https://github.com/digitalBush/jquery.maskedinput/blob/bb66bf9b1c3eddd1d2349cee103127ae08d0a877/demo/index.html

マスク解除は$( "input")。blur(function(){$( "#info")。html( "Unmasked value:" + $(this).mask());によって行われます。

マスキングの例

$( "#pannumber")。mask( "aaaaa 9999 a");

マスキング解除

$( "#pannumber")。blur(function(){

var pannumber = $(this).mask();

0
user1526780