Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Campecino

De text para radiobutton

Recommended Posts

Olá pessoal.

 

Tenho um formulário que verifica cartões de crédito, só que as bandeiras atualmente está em type="text" e eu preciso em type="radio".

 

Quando coloco as bandeiras em radio

<input type="radio" name="CardType" id="VisaCard" value="VisaCard">

, o script não pega mais o valor selecionado.

 

O que pode ser?

 

Segue todo o código:

<html>
<head>
<title>Credit Card Number Validator</title>
<script language="javascript">
/*************************************************************************\
 Author: Simon Tneoh Chee-Boon
 Email Add.: tneohcb@pc.jaring.my
 Last Modified: 30th.Sep.2001
 Copyright (c) 1997-2001 Simon Tneoh  All Rights Reserved
   Permission to use, copy, modify, and distribute this software and its
   documentation for commercial or non-commercial purposes is hereby granted
   provided that this copyright notice appears in all copies.
 This is a demonstration of using credit card javascript object. The
 credit cards used here are the international standard card. Luhncheck is
 used to validate the card number.
\*************************************************************************/
var Cards = new makeArray(8);
Cards[0] = new CardType("MasterCard", "51,52,53,54,55", "16");
var MasterCard = Cards[0];
Cards[1] = new CardType("VisaCard", "4", "13,16");
var VisaCard = Cards[1];
Cards[2] = new CardType("AmExCard", "34,37", "15");
var AmExCard = Cards[2];
Cards[3] = new CardType("DinersClubCard", "30,36,38", "14");
var DinersClubCard = Cards[3];
Cards[4] = new CardType("DiscoverCard", "6011", "16");
var DiscoverCard = Cards[4];
Cards[5] = new CardType("enRouteCard", "2014,2149", "15");
var enRouteCard = Cards[5];
Cards[6] = new CardType("JCBCard", "3088,3096,3112,3158,3337,3528,3529,353,354,355,356,357,3580,3581,3582,3583,3584,3585,3586,3587,3588,3589,3566,3540,3541", "16");
var JCBCard = Cards[6];
var LuhnCheckSum = Cards[7] = new CardType();

/*************************************************************************\
 CheckCardNumber(form)
 function called when users click the "check" button.
\*************************************************************************/
function CheckCardNumber(form) {
 var tmpyear;
 if (form.CardNumber.value.length == 0) {
   alert("Please key in Card Number.");
   form.CardNumber.focus();
   return;
 }
 if (form.ExpYear.value.length == 0) {
   alert("Please key in Expiry Year.");
   form.ExpYear.focus();
   return;
 }
 if (form.ExpYear.value > 96)
   tmpyear = "19" + form.ExpYear.value;
 else if (form.ExpYear.value < 21)
   tmpyear = "20" + form.ExpYear.value;
 else {
   alert("bad year");
   return;
 }
 tmpmonth = form.ExpMon.options[form.ExpMon.selectedIndex].value;
 // The following line doesn't work in IE3, you need to change it
 // to something like "(new CardType())...".
 // if (!CardType().isExpiryDate(tmpyear, tmpmonth)) {
 if (!(new CardType()).isExpiryDate(tmpyear, tmpmonth)) {
   alert("expiry date passed already.");
   return;
 }
 card = form.CardType.options[form.CardType.selectedIndex].value;
 var retval = eval(card + ".checkCardNumber(\"" + form.CardNumber.value +
       "\", " + tmpyear + ", " + tmpmonth + ");");

 cardname = "";
 if (retval)
   // The cardnumber has the valid luhn checksum and matches the
   // cardtype's rule.
   alert("correct");
 else {
   // The cardnumber has the valid luhn checksum, but we want to know which
   // cardtype it belongs to.
   for (var n = 0; n < Cards.size; n++) {
     if (Cards[n].checkCardNumber(form.CardNumber.value, tmpyear, tmpmonth)) {
       cardname = Cards[n].getCardType();
       break;
     }
   }
   if (cardname.length > 0) {
     alert("This's " + cardname + " number, not " + card + " number.");
   }
   else {
     alert("This's not a card number.");
   }
 }
}

/*************************************************************************\
  Object CardType([string cardtype, String rules, String len, int year, 
				int month])
   cardtype    : type of card, eg: MasterCard, Visa, etc.
   rules       : rules of the cardnumber, eg: "4", "6011", "34,37".
   len         : valid length of cardnumber, eg: "16,19", "13,16".
   year	: year of expiry date.
   month	: month of expiry date.
   eg:
   var VisaCard = new CardType("Visa", "4", "16");
   var AmExCard = new CardType("AmEx", "34,37", "15");
\*************************************************************************/
function CardType() {
 var n;
 var argv = CardType.arguments;
 var argc = CardType.arguments.length;

 this.objname = "object CardType";

 var tmpcardtype = (argc > 0) ? argv[0] : "CardObject";
 var tmprules = (argc > 1) ? argv[1] : "0,1,2,3,4,5,6,7,8,9";
 var tmplen = (argc > 2) ? argv[2] : "13,14,15,16,19";

 // set CardNumber method.
 this.setCardNumber = setCardNumber;

 // setCardType method.
 this.setCardType = setCardType;

 // setLen method.
 this.setLen = setLen;

 // setRules method.
 this.setRules = setRules;

 // setExpiryDate method.
 this.setExpiryDate = setExpiryDate;

 this.setCardType(tmpcardtype);
 this.setLen(tmplen);
 this.setRules(tmprules);
 if (argc > 4)
   this.setExpiryDate(argv[3], argv[4]);

 // checkCardNumber method.
 this.checkCardNumber = checkCardNumber;

 // getExpiryDate method.
 this.getExpiryDate = getExpiryDate;

 // getCardType method.
 this.getCardType = getCardType;

 // isCardNumber method.
 this.isCardNumber = isCardNumber;

 // isExpiryDate method.
 this.isExpiryDate = isExpiryDate;

 // luhnCheck method.
 this.luhnCheck = luhnCheck;

 return this;
}

/*************************************************************************\
  boolean checkCardNumber([string cardnumber, int year, int month])
  return true if cardnumber pass the luhncheck and the expiry date is
  valid, else return false.
\*************************************************************************/
function checkCardNumber() {
 var argv = checkCardNumber.arguments;
 var argc = checkCardNumber.arguments.length;
 var cardnumber = (argc > 0) ? argv[0] : this.cardnumber;
 var year = (argc > 1) ? argv[1] : this.year;
 var month = (argc > 2) ? argv[2] : this.month;

 this.setCardNumber(cardnumber);
 this.setExpiryDate(year, month);

 if (!this.isCardNumber())
   return false;

 if (!this.isExpiryDate())
   return false;

 return true;
}

/*************************************************************************\
  String getCardType()
  return the cardtype.
\*************************************************************************/
function getCardType() {
 return this.cardtype;
}

/*************************************************************************\
  String getExpiryDate()
  return the expiry date.
\*************************************************************************/
function getExpiryDate() {
 return this.month + "/" + this.year;
}

/*************************************************************************\
  boolean isCardNumber([string cardnumber])
  return true if cardnumber pass the luhncheck and the rules, else return
  false.
\*************************************************************************/
function isCardNumber() {
 var argv = isCardNumber.arguments;
 var argc = isCardNumber.arguments.length;
 var cardnumber = (argc > 0) ? argv[0] : this.cardnumber;

 if (!this.luhnCheck())
   return false;

 for (var n = 0; n < this.len.size; n++)
   if (cardnumber.toString().length == this.len[n]) {
     for (var m = 0; m < this.rules.size; m++) {
       var headdigit = cardnumber.substring(0, this.rules[m].toString().length);
       if (headdigit == this.rules[m])
         return true;
     }
     return false;
   }

 return false;
}

/*************************************************************************\
 boolean isExpiryDate([int year, int month])
 return true if the date is a valid expiry date,
 else return false.
\*************************************************************************/
function isExpiryDate() {
 var argv = isExpiryDate.arguments;
 var argc = isExpiryDate.arguments.length;

 year = argc > 0 ? argv[0] : this.year;
 month = argc > 1 ? argv[1] : this.month;

 if (!isNum(year+""))
   return false;
 if (!isNum(month+""))
   return false;
 today = new Date();
 expiry = new Date(year, month);
 if (today.getTime() > expiry.getTime())
   return false;
 else
   return true;
}

/*************************************************************************\
 boolean isNum(String argvalue)
 return true if argvalue contains only numeric characters,
 else return false.
\*************************************************************************/
function isNum(argvalue) {
 argvalue = argvalue.toString();

 if (argvalue.length == 0)
   return false;

 for (var n = 0; n < argvalue.length; n++)
   if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9")
     return false;

 return true;
}

/*************************************************************************\
 boolean luhnCheck([string CardNumber])
 return true if CardNumber pass the luhn check else return false.
 Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl
\*************************************************************************/
function luhnCheck() {
 var argv = luhnCheck.arguments;
 var argc = luhnCheck.arguments.length;

 var CardNumber = argc > 0 ? argv[0] : this.cardnumber;

 if (! isNum(CardNumber)) {
   return false;
 }

 var no_digit = CardNumber.length;
 var oddoeven = no_digit & 1;
 var sum = 0;

 for (var count = 0; count < no_digit; count++) {
   var digit = parseInt(CardNumber.charAt(count));
   if (!((count & 1) ^ oddoeven)) {
     digit *= 2;
     if (digit > 9)
digit -= 9;
   }
   sum += digit;
 }
 if (sum % 10 == 0)
   return true;
 else
   return false;
}

/*************************************************************************\
 ArrayObject makeArray(int size)
 return the array object in the size specified.
\*************************************************************************/
function makeArray(size) {
 this.size = size;
 return this;
}

/*************************************************************************\
  CardType setCardNumber(cardnumber)
  return the CardType object.
\*************************************************************************/
function setCardNumber(cardnumber) {
 this.cardnumber = cardnumber;

 return this;
}

/*************************************************************************\
  CardType setCardType(cardtype)
  return the CardType object.
\*************************************************************************/
function setCardType(cardtype) {
 this.cardtype = cardtype;

 return this;
}

/*************************************************************************\
  CardType setExpiryDate(year, month)
  return the CardType object.
\*************************************************************************/
function setExpiryDate(year, month) {
 this.year = year;
 this.month = month;

 return this;
}

/*************************************************************************\
  CardType setLen(len)
  return the CardType object.
\*************************************************************************/
function setLen(len) {
 // Create the len array.
 if (len.length == 0 || len == null)
   len = "13,14,15,16,19";

 var tmplen = len;
 n = 1;
 while (tmplen.indexOf(",") != -1) {
   tmplen = tmplen.substring(tmplen.indexOf(",") + 1, tmplen.length);
   n++;
 }
 this.len = new makeArray(n);
 n = 0;
 while (len.indexOf(",") != -1) {
   var tmpstr = len.substring(0, len.indexOf(","));
   this.len[n] = tmpstr;
   len = len.substring(len.indexOf(",") + 1, len.length);
   n++;
 }
 this.len[n] = len;

 return this;
}

/*************************************************************************\
  CardType setRules()
  return the CardType object.
\*************************************************************************/
function setRules(rules) {
 // Create the rules array.
 if (rules.length == 0 || rules == null)
   rules = "0,1,2,3,4,5,6,7,8,9";

 var tmprules = rules;
 n = 1;
 while (tmprules.indexOf(",") != -1) {
   tmprules = tmprules.substring(tmprules.indexOf(",") + 1, tmprules.length);
   n++;
 }
 this.rules = new makeArray(n);
 n = 0;
 while (rules.indexOf(",") != -1) {
   var tmpstr = rules.substring(0, rules.indexOf(","));
   this.rules[n] = tmpstr;
   rules = rules.substring(rules.indexOf(",") + 1, rules.length);
   n++;
 }
 this.rules[n] = rules;

 return this;
}

</script>
</head>
<body bgcolor="#ffffff">
<h2>Credit Card Number Validator</h2>
<hr>
<blockquote>
<font color="#ff0000">Alert!
Please do not use a real card number and valid expiry date to test. If you
really want to do it, please check the source first, make sure it will not
submit the card number.<br></font>
<form name="ThisForm">
Card Number: <input name="CardNumber" size="16" maxlength="19"><br>
Card Type:
<select name="CardType">
<option value="MasterCard">MasterCard
<option value="VisaCard">Visa
<option value="AmExCard">AmEx
<option value="DinersClubCard">Diners Club
<option value="DiscoverCard">Discover
<option value="enRouteCard">enRoute
<option value="JCBCard">JCB
<option value="LuhnCheckSum">luhn check only
</select>

<input type="radio" name="CardType" id="VisaCard" value="VisaCard">


<br>
Expiry Date: Month
<select name="ExpMon">
<option value="1" selected>1
<option value="2">2
<option value="3">3
<option value="4">4
<option value="5">5
<option value="6">6
<option value="7">7
<option value="8">8
<option value="9">9
<option value="10">10
<option value="11">11
<option value="12">12
</select>
Year <input name="ExpYear" size="2" maxlength="2">(Range: 1997~2020)<br>
<input type="button" value="Check" OnClick="CheckCardNumber(this.form)"><br>
</form>
</body>
</html>

 

Obrigado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.