Frage

Ich versuche, einen Eingang auf meiner Seite zu haben, dass ich möchte eine US-Telefonnummer Maske standardmäßig haben. Wenn ein Anwender eine Checkbox klickt specifing möchten sie eine internationale Telefonnummer einzugeben ich der Maske soll entfernt werden.

Ich habe mehrere Möglichkeiten ausprobiert und haben bisher nicht erfolgreich gewesen. Im aktuellen Projekt, das ich einen völlig anderen Eingangs jQuery hide / show verwenden. Aber ich weiß nicht, wie die Option und würde eine straffere Ansatz mag.

Ich bin mit dem folgenden:

jQuery 1.4.1 (in Richtung 1.4.2 bald aktualisieren) und 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>

Der obige Code ordnungsgemäß funktioniert die Standardmaske zu setzen, aber egal, was ich auf dem Click-Ereignis versuchen, für den InternationalOfficePhone es nicht die Maske nicht entfernt.

Jede Hilfe ist sehr geschätzt.

War es hilfreich?

Lösung 2

Ich war in der Lage, den Code, um herauszufinden, es zur Arbeit zu kommen. Unten ist der Code, den ich jetzt benutze.

<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>

Andere Tipps

Sie brauchen keine Parameter an die unmask Funktion zu übergeben! Verwenden Sie es, ohne einen Parameter und es funktioniert gut.

$("#OfficePhone").unmask();

Ich laufe durch das gleiche Problem, und was mir geholfen ist:

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

Versuchen Sie, die :checked statt attr Prüfung mit, ich glaube, dass das Problem ist. Ich meine Verwendung $('#InternationalOfficePhone').is(':checked') in der, wenn die Bedingung.

Nehmen Sie die Eingabemaske:

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

oder

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

oder

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

Ich bin mit query.maskedinput.js Version: 1.4.1 Ich verwies https://github.com/digitalBush/jquery.maskedinput/ Blob / bb66bf9b1c3eddd1d2349cee103127ae08d0a877 / demo / index.html

wird die Demaskierung erfolgt durch $ ( "Input"). Blur (function () {             $ ( "# Info") html ( "Unmasked Wert:" + $ (this) .mask ());.

Beispiel Maskierung ist

$ ( "# pannumber") Maske ( "Aaaaa 9999 a");.

Unmasking

$ ( "# pannumber"). Blur (function () {

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top