2012-08-13 25 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