2016-02-12 67 views
1

我正在使用jQuery掩碼功能(特別是電話)。我目前沒有進行任何客戶端驗證,並且希望它發送數字,即使它們沒有完全填寫掩碼。使用jQuery掩碼和空白正在發佈到服務器

例如,我希望得到一個電話號碼的10位數字。如果用戶只輸入9,我希望我的服務器處理錯誤。不幸的是,如果輸入的值與掩碼不匹配,它將不會發送任何內容。

這裏是我的js代碼:

$(".phone input[type=text]").mask("(999) 999-9999"); 

什麼我必須這樣做,即使面具沒有填寫它仍然會發送值時的形式發佈?

+0

掩碼是一個JQuery函數還是你使用一些JQuery插件或其他庫? – Erick

+0

@Erick OP大概是用[這個masking插件](http://igorescobar.github.io/jQuery-Mask-Plugin/)。這裏是我剛剛創建的[基本示例](https://jsfiddle.net/m689v1jd/);價值似乎包括提交掩蓋的部分,所以我不能重現該問題。 –

+0

我作爲第二個開發人員進入這個,但我相信正在使用的插件是這樣的:http:// digitalbush.com/projects/masked-input-plugin/ – Dan

回答

1

根據the documentation of the mask plugin您使用,一切都經過?是可選的,因此你可以使用以下,以保留不提供即使10位的值:

$(".phone input[type=text]").mask("?(999) 999-9999"); 

如果你想去掉非數字字符,你可以使用檢索時下列元素的值:

$(".phone input[type=text]").val().replace(/\D+/g, ''); 

如果你想剝離這些字符出來提交,你會使用類似:

$('form').on('submit', function() { 
    $(".phone input[type=text]").val(function() { 
    return this.value.replace(/\D+/g, ''); 
    }); 
}); 

作爲一個側面說明,如果你使用this masking plugin代替,這將不會是一個問題。另外,它還有一個cleanVal()方法來刪除格式化字符。

+0

今晚我會再試一次。我正在考慮使用可選值,但我想知道是否有人知道更好的答案。我可能需要將模糊值轉儲,因爲如果插件不符合遮罩要求,插件似乎將其留在模糊處理器上。 – Dan

相關問題