Javascript 使用jQuery使用表单强制某些类型的输入
我有一张记录信用卡号码的表格。如何强制执行以下操作: 16位表示抄送号码,如果从选择元素中选择了美国运通,则为15位 CSV编号为3位,如果从选择元素中选择了美国运通,则为4位 billingState为2位数字,因此只能为NY、CA、NV等 billingZip为5位数字 ……-。。。。电话号码格式 这是我的密码- 我在页面的大部分地方使用jQuery。在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并没有提供如此强大的机制来控制用户输入
谢谢大家! 我想您应该添加一些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事件不考虑鼠标复制粘贴场景。此外,他们应该放弃询问卡片类型,因为一旦输入第一个数字,他们就已经知道了。