2010-04-05 55 views
10

我想在我的網頁上有一個輸入,我希望默認具有美國電話號碼掩碼。如果最終用戶點擊複選框指定他們想輸入國際電話號碼,我想要刪除掩碼。如何讓jQuery MaskedInput unmask()函數正常工作?

我已經嘗試了多種方式,迄今爲止一直沒有成功。在當前的項目中,我使用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的單擊事件,它都不會刪除掩碼。

任何幫助,非常感謝。

+0

我得到的錯誤是在un/mask行,它返回一個「對象不支持這個屬性或方法」 – 2010-04-05 19:37:40

回答

16

我能弄清楚它的代碼來使它工作。以下是我現在使用的代碼。

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

'.unmask()'完美地工作。我只需要,謝謝。但正如迭戈的回答所指出的,你不需要傳遞一個參數給函數。 – Chad 2015-07-07 18:15:00

2

嘗試使用:checked而不是attr檢查,我認爲這是問題所在。我的意思是在if條件下使用$('#InternationalOfficePhone').is(':checked')

+0

這並沒有什麼區別。我仍然在$(「#OfficePhone」)。unmask()代碼上發生錯誤。 – 2010-04-05 19:29:01

+0

你得到的錯誤是什麼?在做unmask之前檢查'isMasked' – 2010-04-05 20:16:18

+1

查看我發佈的答案。我終於弄清楚了。 – 2010-04-05 20:22:02

20

您不需要將參數傳遞給unmask函數! 使用它沒有參數,它運作良好。

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

確認!無參數工作。這應該可能是一個評論,雖然... – Chad 2015-07-07 18:16:51

+2

爲什麼評論如果這是問題的答案? – 2015-07-30 22:57:09

+0

已經有一個使用'unmask'函數的答案,並且你的答案看起來就好像它正在建立在這個答案 – Chad 2015-07-31 13:39:09

2

我經歷了同樣的問題跑,什麼幫助我的是:

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

刪除輸入掩碼:

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

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

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

$(selector).mask(...) $(selector).inputmask未定義之後。 – 2017-08-29 06:48:59

+1

未捕獲ReferenceError:未定義輸入掩碼 – 2017-08-29 06:59:17

+0

@ Crimean.us輸入掩碼庫必須加載。 https://github.com/RobinHerbots/Inputmask – EngineerCoder 2017-08-30 14:36:41

0

我使用query.maskedinput.js版本:1.4.1 我提到 https://github.com/digitalBush/jquery.maskedinput/blob/bb66bf9b1c3eddd1d2349cee103127ae08d0a877/demo/index.html

的揭露是由 $( 「輸入」)進行模糊(函數(){$ (。 「#info」)。html(「Unmasked value:」+ $(this).mask());

例如 掩蔽是

$( 「#pannumber」)掩模( 「AAAAA 9999的」)。

揭露

$( 「#pannumber」)。模糊(函數(){

變種pannumber = $(本)。mask();