2012-08-13 75 views
-1

我有一個看起來像這樣與maskedinput插件刪除文字驗證之前,並提交

(999)999-9999

我想要的jQuery驗證到所需的電話號碼字段的形式爲了驗證這一點,忽略文字。另外,我希望在提交表單之前刪除文字。但是,如果出現驗證錯誤,我仍然希望激活maskedinput插件,以便該格式對用戶仍然是正確的。

我想我可以編輯驗證的正則表達式,但是當表單提交時,文字仍然會在那裏。

讓我知道我需要更好地解釋這一點。

任何想法?我對jquery很新,所有如此詳細的解決方案都很棒。

我的JavaScript代碼是這樣的

$(document).ready(function(){ 


    jQuery.validator.addMethod("phoneUS", function(phone_number, element) { 
    phone_number = phone_number.replace(/\s+/g, ""); 
    return this.optional(element) || phone_number.length > 9 && 
    phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); 
    }, "US Phone Number Required"); 


    $("#valform").validate({ 
    invalidHandler: function(form, validator) { 
     var errors = validator.numberOfInvalids(); 

     if (errors) { 
      $("#error-message").show().text("Please correct the required field(s)"); 
     } else { 
      $("#error-message").hide(); 
     } 
    }, 
    messages: { 
     phone: { 
      required: "" 
     } 
    }, 
    rules: { 
     phone: { 
      required: true, 
      phoneUS: true 
     }, 

     }, 
    }); 



    $("#phone").mask("(999) 999-9999",{placeholder:" "}); 


    }); 

回答

1

你可以使用提交JS

這個代碼的形式將其輸入從輸入儘快移除禁用的字符之前刪除其他字符。

輸入字段有「數字」類。這種結合了「KEYUP」事件到輸入字段,並調用了一個名爲「handleInputKeyUp」

$(".numbers").bind("keyup", handleInputKeyUp); 

函數功能:

function handleInputKeyUp(e){  

    var temp = e.currentTarget.value; 
       temp = temp.replace(/[^\d-]/g, ""); 
       e.currentTarget.value = temp; 
    } 

此代碼刪除所有,但數字和 - 從輸入字段。

+0

你可能想要逃避'+'字符。 – 2012-08-13 07:32:52

+0

@DavidThomas如果你想輸入一個電話號碼,那麼可以使用它 – PaperThick 2012-08-13 07:34:18

+0

是的,但沒有被轉義,它是一個正則表達式特殊字符?或者我錯過了一些東西,它還是有點早... – 2012-08-13 07:38:02