我正在制作一个页面,其中包含一组卡片详细信息作为表单。需要使用 JavaScript 手动验证字段(不使用HTML 5)。我遇到的一个问题是 16位卡号字段。
我无法弄清楚为什么我会让这个不一致的失败者得到验证。我的代码有什么问题? 感谢。
<form onsubmit="submitDetails()">
<input type="text" id="name" placeholder="Name" style="left:200px;position: absolute;"><br />
<input type="text" id="cardNo" placeholder="Card Number" style="left:200px;position: absolute;"><br />
<input type="text" id="expMonth" placeholder="MM" style="left:200px;position: absolute;">
<input type="text" id="expYear" placeholder="YYYY" style="left:350px;position: absolute;"><br />
<input type="text" id="secCode" placeholder="Security Code" style="left:200px;position: absolute;"><br />
<input type="submit" id="submit" value="Submit Details" style="left:200px;position: absolute;">
</form>
var cardNo = document.getElementById('cardNo').value;
if ((cardNo.toString().length != 16) || (isNaN(parseInt(cardNo)))){
errorMsg += "\n\u2022 Enter a Card Number of 16 digits.\n"
}
答案 0 :(得分:1)
parseInt()
函数从你给它的字符串的前面解析一个整数。当遇到某些不属于数字的东西时,它会停止并返回到目前为止所看到的值。只有当字符串以不能解释为数字的字符串开头时,它才会返回NaN
。
答案 1 :(得分:0)
来自MDN:
如果第一个字符无法转换为数字,则parseInt返回NaN。