【问题标题】:credit card type and number validation in jspjsp中的信用卡类型和号码验证
【发布时间】:2017-08-28 06:54:17
【问题描述】:

我想运行一个程序,将信用卡类型与输入的号码匹配,即当我从 select 中选择卡类型时,如果卡类型与输入的号码匹配,则应该加载卡的图像。我使用了 switch案例与 if 和 else 在 case.当我运行代码时只有 else 部分正在工作。

我需要的是它应该显示警报消息作为有效卡和卡的图像应该显示,如果不是它应该作为无效卡发出警报。这是我下面的代码..

<script type="text/javascript">
    		function validate() 
                {
    			var a = document.getElementById("mySelect").value;
    			var b = document.getElementById("cardno").value;
    			var v = /^(?:4[0-9]{12}(?:[0-9]{3})?)$/;   
    			var e = /^(?:3[47][0-9]{13})$/;   
    			var j = /^(?:(?:2131|1800|35\d{3})\d{11})$/;
    			var element = document.getElementById("img1");
    			var element1 = document.getElementById("img2");
    			var element2 = document.getElementById("img3");
    			var card=a;
    			switch(card){
    			case "visa":
    			if (b == v) 
                {
                alert("valid");
                element.src="images/visa.jpg";
    				
    			} else {
    				
    				alert("Invalid card number,Should start with 4");
    	
    			}
                break;
    			case "ae":
    			if (b == e) {
                    alert("valid");
    				element1.src="images/ae.jpg";
    			} else {
    				alert("Invalid card number,Should start with 34 or 37 ");
    			}
    			break;
    			case "jcb":
    			if (b == j) {
                    alert("valid");
    				element2.src="images/jcb.jpg";
    			} else
    			{
    				alert("Invalid card number,Should start with 2131
or 1800");
    			}
    			break;
    			default:
    				alert("Enter valid card numbers");
    			}
    		}
    	</script>
<html>
    <head>
    <title>User Form</title>
    </head>
    <body style="background-color: palegreen">
    <div align="left" height="50%" width="40%">
<form action="user" method="post">
    			<table>
    				<tr>
    					<td><label>UserName:</label></td>
    					<td><input type="text" name="uname"
    						placeholder="Enter username" required><br> <br></td>  
    				</tr>
    				<tr>
    					<td><label>cardname:</label></td>
    					<td><select id="mySelect">
    							<option value="">SelectCard</option>
    							<option value="visa">Visa</option>
    							<option value="ae">AmericanExpress</option>
    							<option value="jcb">Jcb</option>
    					</select><br> <br></td>
    				</tr>
    				<tr>
    					<td><label>cardnumber:</label></td>
    					<td><input type="text" name="nom" id="cardno" maxlength="16"
    						pattern="/^[0-9]+$/" title="Enter Valid Card No"
    						placeholder="Enter Card number" onkeypress="validate()" required><br>
    						<br></td>
    				</tr>
    				<tr>
    					<td><label>Date Of Expiry:</label></td>
    					<td><input type="text" name="doe" placeholder="dd/MM/yyyy"
    						required><br> <br></td>
    				</tr>
    				<tr>
    					<td><label>Bill Due Date:</label></td>
    					<td><input type="text" name="dat" placeholder="dd/MM/yyyy"
    						required><br> <br></td>
    				</tr>
    				<tr>
    					<td><input type="submit" value="Add"
    						style="height: 30px; width: 100px" class="glowing-border"></td>
    				</tr>
    			</table>
    		</form>
    	</div> 
    	<img src="images/visa.jpg" id="img1" align="right" height="40"
    		width="50">
    	<img src="images/ae.jpg" id="img2" align="right" height="40" width="50">
    	<img src="images/jcb.jpg" id="img3" align="right" height="40"
    		width="50">
    </body>
    </html>

【问题讨论】:

  • 您可以删除所有 IF 和 ELSE 语句并移动 ELSE 部分以切换默认大小写。
  • 谢谢,如果我删除 if 和 else 语句,文本框中输入的数字如何与正则表达式匹配。
  • 根据您当前的逻辑,我认为您可以更改 IF 条件,例如 if(v.test("b")) 和 if(e.test("b")) 和 if(j.test ("b"))。

标签: javascript jsp


【解决方案1】:

您正在将 RegExp 对象与字符串进行比较,这是行不通的。
我猜你想用正则表达式测试字符串。这不是通过比较器 (== || ===) 完成的,而是通过调用正则表达式对象上的 test 方法将字符串作为参数进行测试,如下所示:

let regexpObj = /^(?:4[0-9]{12}(?:[0-9]{3})?)$/;
if (regexpObj.test("a string")) {
  // If the method returns true, its a match, else its not a match.
}

我建议阅读MDN web docs 关于正则表达式。

【讨论】:

    猜你喜欢
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 2012-01-01
    • 2016-01-22
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    相关资源
    最近更新 更多