gpt4 book ai didi

JavaScript:表单验证?

转载 作者:太空宇宙 更新时间:2023-11-04 16:18:17 25 4
gpt4 key购买 nike

我猜测问题出在 Visacard 函数中,我将其设置为如果卡号文本输入长度 != 到 16(卡号的长度),它会发出警报并说无效。但问题是即使长度等于16它仍然显示无效

    <body>
<script type="text/javascript">
function fun(){
var ddl = document.getElementById("cardtype");
var selectedValue = ddl.options[ddl.selectedIndex].value;
if (selectedValue == "cardtype1"){
alert("Please select card type");
}
}

function visacard(){
var ffl = document.getElementById("cardtype");
var words = parseFloat(document.getElementById("ccn").value);
var selectedVisa = ffl.options[ffl.selectedIndex].value;
var fin = words.length;

if (selectedVisa == "visa" && words.length != 16 ){
alert("Invalid card number, Try again");
}
}

</script>



<select id="cardtype">
<option value="cardtype1"> - Card Type - </option>
<option value="visa">Visa</option>
<option value="amex">Amex</option>
<option value="mastercard">Mastercard</option>
</select>

<p>Credit Card Number <input type="text" id="ccn"/></p>
<p>CVV <input type="text" id="cvv"/></p>


<select name="DOBMonth">
<option> - Month - </option>
<option value="January">January</option>
<option value="Febuary">Febuary</option>
<option value="March">March</option>
<option value="April">April</option>
<option value="May">May</option>
<option value="June">June</option>
<option value="July">July</option>
<option value="August">August</option>
<option value="September">September</option>
<option value="October">October</option>
<option value="November">November</option>
<option value="December">December</option>
</select>

<select name="DOBYear">
<option> - Year - </option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
<option value="2021">2021</option>
<option value="2022">2022</option>
<option value="2023">2023</option>



</select>


<input type="button" onClick="fun();visacard();" value="click here">

</body>
</html>

最佳答案

这是因为 float 类型的 wordslength 未定义。

示例:

console.log(parseFloat(1111).length); //undefined

您可以使用 toString() 将数字转换为字符串。

if (selectedVisa === "visa" && words.toString().length !== 16 ){

两个不相关的注释:

  • 不要强制用户选择 Visa/MasterCard。您可以根据 BIN 的第一位数字自行决定(4 = Visa,5 = MasterCard)。

  • 不要使用 ==!= 等非严格比较,而使用 === !== 相反。

关于JavaScript:表单验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40880022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com