📄 form_check.js.svn-base
字号:
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.
function checkMonth (theField, emptyOK)
{ if (checkMonth.arguments.length == 1) emptyOK = defaultEmptyOK;
if ((emptyOK == true) && (isEmpty(theField.value))) return true;
if (!isMonth(theField.value, false))
return warnInvalid (theField, iMonth);
else return true;
}
// Check that string theField.value is a valid Day.
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.
function checkDay (theField, emptyOK)
{ if (checkDay.arguments.length == 1) emptyOK = defaultEmptyOK;
if ((emptyOK == true) && (isEmpty(theField.value))) return true;
if (!isDay(theField.value, false))
return warnInvalid (theField, iDay);
else return true;
}
// checkDate (yearField, monthField, dayField, STRING labelString [, OKtoOmitDay==false])
//
// Check that yearField.value, monthField.value, and dayField.value
// form a valid date.
//
// If they don't, labelString (the name of the date, like "Birth Date")
// is displayed to tell the user which date field is invalid.
//
// If it is OK for the day field to be empty, set optional argument
// OKtoOmitDay to true. It defaults to false.
function checkDate (yearField, monthField, dayField, labelString, OKtoOmitDay)
{ // Next line is needed on NN3 to avoid "undefined is not a number" error
// in equality comparison below.
if (checkDate.arguments.length == 4) OKtoOmitDay = false;
if (!isYear(yearField.value)) return warnInvalid (yearField, iYear);
if (!isMonth(monthField.value)) return warnInvalid (monthField, iMonth);
if ( (OKtoOmitDay == true) && isEmpty(dayField.value) ) return true;
else if (!isDay(dayField.value))
return warnInvalid (dayField, iDay);
if (isDate (yearField.value, monthField.value, dayField.value))
return true;
alert (iDatePrefix + labelString + iDateSuffix)
return false
}
// Get checked value from radio button.
function getRadioButtonValue (radio)
{ for (var i = 0; i < radio.length; i++)
{ if (radio[i].checked) { break }
}
return radio[i].value
}
// Validate credit card info.
function checkCreditCard (radio, theField)
{ var cardType = getRadioButtonValue (radio)
var normalizedCCN = stripCharsInBag(theField.value, creditCardDelimiters)
if (!isCardMatch(cardType, normalizedCCN))
return warnInvalid (theField, iCreditCardPrefix + cardType + iCreditCardSuffix);
else
{ theField.value = normalizedCCN
return true
}
}
/* ================================================================
Credit card verification functions
Originally included as Starter Application 1.0.0 in LivePayment.
20 Feb 1997 modified by egk:
changed naming convention to initial lowercase
(isMasterCard instead of IsMasterCard, etc.)
changed isCC to isCreditCard
retained functions named with older conventions from
LivePayment as stub functions for backward
compatibility only
added "AMERICANEXPRESS" as equivalent of "AMEX"
for naming consistency
================================================================ */
/* ================================================================
FUNCTION: isCreditCard(st)
INPUT: st - a string representing a credit card number
RETURNS: true, if the credit card number passes the Luhn Mod-10
test.
false, otherwise
================================================================ */
function isCreditCard(st) {
// Encoding only works on cards with less than 19 digits
if (st.length > 19)
return (false);
sum = 0; mul = 1; l = st.length;
for (i = 0; i < l; i++) {
digit = st.substring(l-i-1,l-i);
tproduct = parseInt(digit ,10)*mul;
if (tproduct >= 10)
sum += (tproduct % 10) + 1;
else
sum += tproduct;
if (mul == 1)
mul++;
else
mul--;
}
// Uncomment the following line to help create credit card numbers
// 1. Create a dummy number with a 0 as the last digit
// 2. Examine the sum written out
// 3. Replace the last digit with the difference between the sum and
// the next multiple of 10.
// document.writeln("<BR>Sum = ",sum,"<BR>");
// alert("Sum = " + sum);
if ((sum % 10) == 0)
return (true);
else
return (false);
} // END FUNCTION isCreditCard()
/* ================================================================
FUNCTION: isVisa()
INPUT: cc - a string representing a credit card number
RETURNS: true, if the credit card number is a valid VISA number.
false, otherwise
Sample number: 4111 1111 1111 1111 (16 digits)
================================================================ */
function isVisa(cc)
{
if (((cc.length == 16) || (cc.length == 13)) &&
(cc.substring(0,1) == 4))
return isCreditCard(cc);
return false;
} // END FUNCTION isVisa()
/* ================================================================
FUNCTION: isMasterCard()
INPUT: cc - a string representing a credit card number
RETURNS: true, if the credit card number is a valid MasterCard
number.
false, otherwise
Sample number: 5500 0000 0000 0004 (16 digits)
================================================================ */
function isMasterCard(cc)
{
firstdig = cc.substring(0,1);
seconddig = cc.substring(1,2);
if ((cc.length == 16) && (firstdig == 5) &&
((seconddig >= 1) && (seconddig <= 5)))
return isCreditCard(cc);
return false;
} // END FUNCTION isMasterCard()
/* ================================================================
FUNCTION: isAmericanExpress()
INPUT: cc - a string representing a credit card number
RETURNS: true, if the credit card number is a valid American
Express number.
false, otherwise
Sample number: 340000000000009 (15 digits)
================================================================ */
function isAmericanExpress(cc)
{
firstdig = cc.substring(0,1);
seconddig = cc.substring(1,2);
if ((cc.length == 15) && (firstdig == 3) &&
((seconddig == 4) || (seconddig == 7)))
return isCreditCard(cc);
return false;
} // END FUNCTION isAmericanExpress()
/* ================================================================
FUNCTION: isDinersClub()
INPUT: cc - a string representing a credit card number
RETURNS: true, if the credit card number is a valid Diner's
Club number.
false, otherwise
Sample number: 30000000000004 (14 digits)
================================================================ */
function isDinersClub(cc)
{
firstdig = cc.substring(0,1);
seconddig = cc.substring(1,2);
if ((cc.length == 14) && (firstdig == 3) &&
((seconddig == 0) || (seconddig == 6) || (seconddig == 8)))
return isCreditCard(cc);
return false;
}
/* ================================================================
FUNCTION: isCarteBlanche()
INPUT: cc - a string representing a credit card number
RETURNS: true, if the credit card number is a valid Carte
Blanche number.
false, otherwise
================================================================ */
function isCarteBlanche(cc)
{
return isDinersClub(cc);
}
/* ================================================================
FUNCTION: isDiscover()
INPUT: cc - a string representing a credit card number
RETURNS: true, if the credit card number is a valid Discover
card number.
false, otherwise
Sample number: 6011000000000004 (16 digits)
================================================================ */
function isDiscover(cc)
{
first4digs = cc.substring(0,4);
if ((cc.length == 16) && (first4digs == "6011"))
return isCreditCard(cc);
return false;
} // END FUNCTION isDiscover()
/* ================================================================
FUNCTION: isEnRoute()
INPUT: cc - a string representing a credit card number
RETURNS: true, if the credit card number is a valid enRoute
card number.
false, otherwise
Sample number: 201400000000009 (15 digits)
================================================================ */
function isEnRoute(cc)
{
first4digs = cc.substring(0,4);
if ((cc.length == 15) &&
((first4digs == "2014") ||
(first4digs == "2149")))
return isCreditCard(cc);
return false;
}
/* ================================================================
FUNCTION: isJCB()
INPUT: cc - a string representing a credit card number
RETURNS: true, if the credit card number is a valid JCB
card number.
false, otherwise
================================================================ */
function isJCB(cc)
{
first4digs = cc.substring(0,4);
if ((cc.length == 16) &&
((first4digs == "3088") ||
(first4digs == "3096") ||
(first4digs == "3112") ||
(first4digs == "3158") ||
(first4digs == "3337") ||
(first4digs == "3528")))
return isCreditCard(cc);
return false;
} // END FUNCTION isJCB()
/* ================================================================
FUNCTION: isAnyCard()
INPUT: cc - a string representing a credit card number
RETURNS: true, if the credit card number is any valid credit
card number for any of the accepted card types.
false, otherwise
================================================================ */
function isAnyCard(cc)
{
if (!isCreditCard(cc))
return false;
if (!isMasterCard(cc) && !isVisa(cc) && !isAmericanExpress(cc) && !isDinersClub(cc) &&
!isDiscover(cc) && !isEnRoute(cc) && !isJCB(cc)) {
return false;
}
return true;
} // END FUNCTION isAnyCard()
/* ================================================================
FUNCTION: isCardMatch()
INPUT: cardType - a string representing the credit card type
cardNumber - a string representing a credit card number
RETURNS: true, if the credit card number is valid for the particular
credit card type given in "cardType".
false, otherwise
================================================================ */
function isCardMatch (cardType, cardNumber)
{
cardType = cardType.toUpperCase();
var doesMatch = true;
if ((cardType == "VISA") && (!isVisa(cardNumber)))
doesMatch = false;
if ((cardType == "MASTERCARD") && (!isMasterCard(cardNumber)))
doesMatch = false;
if ( ( (cardType == "AMERICANEXPRESS") || (cardType == "AMEX") )
&& (!isAmericanExpress(cardNumber))) doesMatch = false;
if ((cardType == "DISCOVER") && (!isDiscover(cardNumber)))
doesMatch = false;
if ((cardType == "JCB") && (!isJCB(cardNumber)))
doesMatch = false;
if ((cardType == "DINERS") && (!isDinersClub(cardNumber)))
doesMatch = false;
if ((cardType == "CARTEBLANCHE") && (!isCarteBlanche(cardNumber)))
doesMatch = false;
if ((cardType == "ENROUTE") && (!isEnRoute(cardNumber)))
doesMatch = false;
return doesMatch;
} // END FUNCTION CardMatch()
/* ================================================================
The below stub functions are retained for backward compatibility
with the original LivePayment code so that it should be possible
in principle to swap in this new module as a replacement for the
older module without breaking existing code. (There are no
guarantees, of course, but it should work.)
When writing new code, do not use these stub functions; use the
functions defined above.
================================================================ */
function IsCC (st) {
return isCreditCard(st);
}
function IsVisa (cc) {
return isVisa(cc);
}
function IsVISA (cc) {
return isVisa(cc);
}
function IsMasterCard (cc) {
return isMasterCard(cc);
}
function IsMastercard (cc) {
return isMasterCard(cc);
}
function IsMC (cc) {
return isMasterCard(cc);
}
function IsAmericanExpress (cc) {
return isAmericanExpress(cc);
}
function IsAmEx (cc) {
return isAmericanExpress(cc);
}
function IsDinersClub (cc) {
return isDinersClub(cc);
}
function IsDC (cc) {
return isDinersClub(cc);
}
function IsDiners (cc) {
return isDinersClub(cc);
}
function IsCarteBlanche (cc) {
return isCarteBlanche(cc);
}
function IsCB (cc) {
return isCarteBlanche(cc);
}
function IsDiscover (cc) {
return isDiscover(cc);
}
function IsEnRoute (cc) {
return isEnRoute(cc);
}
function IsenRoute (cc) {
return isEnRoute(cc);
}
function IsJCB (cc) {
return isJCB(cc);
}
function IsAnyCard(cc) {
return isAnyCard(cc);
}
function IsCardMatch (cardType, cardNumber) {
return isCardMatch (cardType, cardNumber);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -