Wie man die jQuery MaskedInput unmask () Funktion zur Arbeit richtig bekommen?
-
24-09-2019 - |
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.
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 ();