Javascript 使用jQuery使用表单强制某些类型的输入

Javascript 使用jQuery使用表单强制某些类型的输入,javascript,jquery,html,forms,credit-card,Javascript,Jquery,Html,Forms,Credit Card,我有一张记录信用卡号码的表格。如何强制执行以下操作: 16位表示抄送号码,如果从选择元素中选择了美国运通,则为15位 CSV编号为3位,如果从选择元素中选择了美国运通,则为4位 billingState为2位数字,因此只能为NY、CA、NV等 billingZip为5位数字 ……-。。。。电话号码格式 这是我的密码- 我在页面的大部分地方使用jQuery。在jQuery中如何实现这一点 谢谢大家! 我想您应该添加一些javascript代码。通常的HTMl并没有提供如此强大的机制来控制用户输入

我有一张记录信用卡号码的表格。如何强制执行以下操作:

16位表示抄送号码,如果从选择元素中选择了美国运通,则为15位

CSV编号为3位,如果从选择元素中选择了美国运通,则为4位

billingState为2位数字,因此只能为NY、CA、NV等

billingZip为5位数字

……-。。。。电话号码格式

这是我的密码-

我在页面的大部分地方使用jQuery。在jQuery中如何实现这一点


谢谢大家!

我想您应该添加一些javascript代码。通常的HTMl并没有提供如此强大的机制来控制用户输入

使用jQuery,您可以像这样检查信用卡号:

function isAmExSelected()
{
  return $("#creditCardType").val() == "American Express";
}

function containsOnlyDigits(str)
{
   return str.match(/[^0-9]/) == null;
} 

function validateCCNumber()
{
    var ccn = $("#creditCardNumber").val();
    var onlyDigits = containsOnlyDigits(ccn);
    if(isAmExSelected())
    {
       return ccn.length == 15 && onlyDigits;
    }
    else
    {
       return ccn.length == 16 && onlyDigits;
    }
}

function registerValidation(id, validateMethod, errorMethod)
{
    $(id).change(function(){
        if(validateMethod() == false)
        {
            errorMethod();
        }
    });
}

    $(document).ready(function(){
        registerValidation("#creditCardNumber", validateCCNumber, function(){alert("Error!")});
    });

您应该自己编写其他验证

将输入绑定到键控事件。此外,您还可以按第一位数字验证卡,即4=Visa卡,5=万事达卡,3=美国运通卡,6=Discover卡

$(document).ready( function(){
    $("#creditCardNumber").change(function(){
        $value = $(this).val();
        $type = $value.substr(0,1);

        if ( $type == '3' ){
            $(this).attr("maxLength", 15);
        }
        else {
            $(this).attr("maxLength", 16);
        }

        if ( $(this).attr("maxLength") < $value.length ) {
        $len = ( $(this).attr("maxLength") - 1 );
            $(this).val($value.substr(0,$len));
        }
    });
});
您可以使用CVV执行类似的操作,甚至可以获取卡类型的值,而不是第一个数字。对于state和zip,假设您只接受基于US的地址,您可以在HTML中设置maxLength属性。至于电话号码掩码,有一个我从未使用过的jQuery插件,所以我不能担保它,但希望这会让你朝着正确的方向前进


JavaScript。您是否正在使用任何JS库?MooTools、Prototype、jQuery..?我在回复中添加了js代码。我尝试使用您编写的代码,但没有结果。即使我输入了一些不应该验证的内容,也不会收到错误警报。下面是我所有的JS代码:我把函数load和ready搞混了。因此正确的行是$document.ready。我已经编辑了我的样本。然后你应该明白,我的脚本没有考虑很多场景。例如,仅当您离开输入时才触发changed事件。或者,如果你键入16位数的卡号,然后将卡类型转换成AMEX——什么都没有发生,但是应该。KEYUP事件不考虑鼠标复制粘贴场景。此外,他们应该放弃询问卡片类型,因为一旦输入第一个数字,他们就已经知道了。