2011-05-06 22 views
0
var cards = new Array(); 

cards [0] = {name: "VISA", length: "13,16", prefixes: "4", checkdigit: true}; 
cards [1] = {name: "VISA_DELTA/ELECTRON", length: "16", prefixes: "417500,4844,4508,4026,4917,4913", checkdigit: true}; 
cards [2] = {name: "MC", length: "16", prefixes: "51,52,53,54,55", checkdigit: true}; 

那么我的功能:确定与卡卡前缀

function CardTypes() 
{ 
for (var i=0; i<cards.length; i++) { 
if cards.name.Validate(PaymentForm.CardNumber.value)<!--pretty sure this is wrong--> 
cardname = cards[i].getCardType(); 
} 
if (cardname.length > 0) { 
alert("This looks like a " + cardname + " ."); 
}; 
}; 

当表单提交它调用验证功能,依次调用其他所有功能,包括CardTypes()。我喜欢能够通过卡片前缀来确定卡片类型,即4 =签证。我敢肯定,我已经完全搞砸了CardTypes()函数。任何帮助,将不胜感激。我的表单ID是PaymentForm。

+0

在开始编码解决方案之前,我必须确定两件事情:1)PaymentForm.CardNumber.value肯定会给出用户给出的值,2)您希望CardTypes返回卡的名称类型。如果我错了,请纠正我。没有HTML或那两个细节,我不能做更多的事情。 – Mamsaac 2011-05-06 15:21:19

+0

@Mamsaac:感谢您的及时回复。是CardTypes应该返回卡类型名称,即签证等。PaymentForm是我的表单,CardNumber是需要检查的卡号输入字段的ID。虐待将html添加到原始邮件 – Hatzi 2011-05-06 15:29:12

回答

0
function CardTypes() 
{ 
    var givenValue = PaymentForm.CardNumber.value; 
    for (var i = 0; i < cards.length; i++) { 
     var cardPrefixes = cards[i].prefixes.split(','); 
     var leave = false; 
     for (var j = 0; j < cardPrefixes.length; j++) { 
      if (givenValue.indexOf(cardPrefixes[j]) === 0) { 
       return cards[i].name; 
      } 
     } 
    } 
} 

这应该工作。

+0

刚刚看到planetjones响应。它也应该工作。虽然我不会推荐修改String的原型来实现这样的功能。 – Mamsaac 2011-05-06 15:36:41

+0

非常感谢你的帮助...生病让你知道我如何得到。 – Hatzi 2011-05-06 15:57:03

0

什么是PaymentForm.CardNumber.value设置为?这是卡的整个号码吗?

var cardNumber = PaymentForm.CardNumber.value; 

如果这是正确的,那么你会想读取所有的前缀,例如

for (var i=0; i<cards.length; i++) { 

     var prefixes= cards[i].prefixes; 
     var prefixArray = prefixes.split(","); 

     for(var j=0; j < prefixArray.length; j++) { 

      if(cardNumber.startsWith(prefixArray[j])) { 
       alert("Card Type is " + cards[i].name); 
      } 

      } 
    } 

//此方法添加到字符串

String.prototype.startsWith = function(str){ 
    return (this.indexOf(str) === 0); 
} 

的jsfiddle:http://jsfiddle.net/KDTPX/

+0

感谢您的帮助...生病让你知道我如何得到 – Hatzi 2011-05-06 15:55:45