2013-07-23 44 views
0

我有信用卡的形式和我与JS动态数据验证执行。出于某种原因,数据验证不会为到期月份和年份里干活:Uncaught SyntaxError: Unexpected identifier神秘的Javascript未捕获的SyntaxError:意外的标识

贝娄是HTML:

<div class="controls controls-row"> 
    <label class="h2_style"><fmt:message key='payment_exp'/><span class="required">*</span></label> 
    <input class="span1 noBottomMargin" maxlength='2' type='text' data-encrypted-name='expiration_month' id='credit_card_expiration_month' value='11' onChange="validateCreditCardExpMonth('credit_card_expiration_month','err_expiration',<fmt:message key='forms.card_date'/>);"></input> 
    <span><input class="span1 noBottomMargin" maxlength='4' type='text' data-encrypted-name='expiration_year' id='credit_card_expiration_year' value='2015' onChange="validateCreditCardExpYear('credit_card_expiration_year','err_expiration',<fmt:message key='forms.card_date'/>);"></input></span> 
    <p class="error" id="err_expiration"></p> 
    <br />  

而且JS:

function validateCreditCardExpMonth(id,err_id,err){ 
var err_text=err; 
var number = document.getElementById(id).value; 
var reg = new RegExp('^(0[1-9]|1[0-2])$', 'i'); 
if(reg.test(number)){ 
    document.getElementById(id).style.borderColor="green"; 
    document.getElementById(err_id).innerHTML=""; 
} 
else{ 
    document.getElementById(id).style.borderColor="red"; 
    document.getElementById(err_id).innerHTML=err_text; 
} 
} 


function validateCreditCardExpYear(id,err_id,err){ 
var err_text=err; 
var number = document.getElementById(id).value; 
var reg = new RegExp('^(201[3-9]|202[0-3])$', 'i'); 
if(reg.test(number)){ 
    document.getElementById(id).style.borderColor="green"; 
    document.getElementById(err_id).innerHTML=""; 
} 
else{ 
    document.getElementById(id).style.borderColor="red"; 
    document.getElementById(err_id).innerHTML=err_text; 
} 
} 

我检查了onChange对其他字段的语法,我没有看到任何区别,因此我不明白为什么这两个不起作用。当我从一个JS专家很远,我想我在这里运行的问题(也许还有一个明显的错误...)

我也查了JSTL消息和错误不是从那里来。

你看到是什么原因造成的问题?

+0

你应该使用正则表达式。 – SLaks

+2

阅读生成的HTML源代码。 – SLaks

+1

明显,但感谢它指向了:我有一个仔细看看生成的HTML和错误消息是“日期D'到期的非的Valide”所以我猜D'到期的'导致了问题 – user2177336

回答

0

更正HTML:

您可以使用:

<div class="controls controls-row"> 
    <label class="h2_style"><fmt:message key='payment_exp'/><span class="required">*</span></label> 
    <input class="span1 noBottomMargin" maxlength='2' type='text' data-encrypted-name='expiration_month' id='credit_card_expiration_month' value='11' onChange="validateCreditCardExpMonth('credit_card_expiration_month','err_expiration','Error Exp');"></input> 
    <span><input class="span1 noBottomMargin" maxlength='4' type='text' data-encrypted-name='expiration_year' id='credit_card_expiration_year' value='2015' onChange="validateCreditCardExpYear('credit_card_expiration_year','err_expiration','Error Year');"></input></span> 
    <p class="error" id="err_expiration"></p> 
    <br /> 

或:

<div class="controls controls-row"> 
    <label class="h2_style"><fmt:message key='payment_exp'/><span class="required">*</span></label> 
    <input class="span1 noBottomMargin" maxlength='2' type='text' data-encrypted-name='expiration_month' id='credit_card_expiration_month' value='11' onChange="validateCreditCardExpMonth('credit_card_expiration_month','err_expiration','<fmt:message key=\'forms.card_date\'/>');"></input> 
    <span><input class="span1 noBottomMargin" maxlength='4' type='text' data-encrypted-name='expiration_year' id='credit_card_expiration_year' value='2015' onChange="validateCreditCardExpYear('credit_card_expiration_year','err_expiration','<fmt:message key=\'forms.card_date\'/>');"></input></span> 
    <p class="error" id="err_expiration"></p> 
    <br /> 

取决于你想传递给了 “validateCreditCardExpYear” 的功能是什么。

你传入一个不正确的格式化字符串中validateCreditCardExpYear函数的最后一个参数。

相关问题