gpt4 book ai didi

javascript - 为什么 typeof 或数字检查验证返回 false

转载 作者:行者123 更新时间:2023-11-30 08:19:46 26 4
gpt4 key购买 nike

为什么数字验证在以下情况下不起作用。

我试过检查值的类型

if(typeof value!=='number'){}

我试过检查值是否小于 1。变量的值默认为 0

if(parseInt(value)<1){}

以下代码段工作正常,现在我想添加额外的要求,检查用户是否输入了数字,如果检测到文本,则停止进一步处理警报数字。

它正在检查空值,对空值工作正常,但是 typeof小于 1 有什么问题。

我将代码块添加为注释,但不起作用。

首先从评论 block 验证是否返回 false,即使我们在字段中输入数字。

来自评论 block 的第二次验证部分有效,但它必须提醒消息并中断进程,但它给出了 NaN 结果。

window.onload=function(){
bk_issue();
}

function bk_issue(){
document.getElementById('btn_iss').onclick=function(){
if(document.querySelectorAll('input[name="book"]:checked').length===0){
alert('Please check at least one book');
return false;
}
if(document.querySelectorAll('input[name="std"]:checked').length===0){
alert('Please check at least one student or staff');
return false;
}
else{
var ttl_qnt = document.querySelector('input[name="book"]:checked').getAttribute('data-id');
var std = document.querySelectorAll('input[name="std"]:checked');
var iss_qnt=0;
for (var i=0;i<std.length;i++){
var value = std[i].closest('tr').getElementsByTagName('td')[2].querySelector('.qnt').value;
if(value===''){
var std_qnt = 0;
alert('Please fill book quantity in checked student field');
return false;
}
// This validation is not working
/* if(typeof value!=='number'){
var std_qnt = 0;
alert('Please type number only');
return false;
}
if(parseInt(value)<1){
var std_qnt = 0;
alert('Please type number only');
return false;
}*/
else{
var std_qnt = std[i].closest('tr').getElementsByTagName('td')[2].querySelector('.qnt').value;
}
iss_qnt += parseInt(std_qnt);
}
alert(iss_qnt);
}

}
}
<html>
<head>
</head>
<body>
<table>
<tr>
<th>Select</th><th>Book</th><th>Qnt</th>
</tr>
<tr>
<td><input type='radio' name='book' value='1' data-id='20' /></td><td>Social Experiment</td><td>20</td>
</tr>
<tr>
<td><input type='radio' name='book' value='1' data-id='12' /></td><td>Evolution of group</td><td>20</td>
</tr>
</table>
<br/>
<button id='btn_iss'>Issue</button>
<br/>
<table>
<tr>
<th>Select</th><th>Name</th><th>Issued Qnt</th>
</tr>
<tr>
<td><input type='checkbox' value='1' name='std' /></td><td>Rahul</td><td><input type='text' value='' class='qnt'></td>
</tr>
<tr>
<td><input type='checkbox' value='2' name='std' /></td><td>Preeti</td><td><input type='text' value='' class='qnt'></td>
</tr>
<tr>
<td><input type='checkbox' value='3' name='std' /></td><td>Prince</td><td><input type='text' value='' class='qnt'></td>
</tr>
</table>

</body>
</html>

最佳答案

value 将始终是一个字符串,检查字符串是否可转换为数字的最佳方法是 window.isNaN 函数(NOTNumber.isNaN 混淆):

if(window.isNaN(value)) {
/* act accordingly, the value is not a number */
}

如果你想将那个value字符串转换成一个数字,只需使用Number构造函数

value = Number(value)

关于javascript - 为什么 typeof 或数字检查验证返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55614436/

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