我试图在输入里程表阅读时创建一个错误捕获。似乎我的ODO值没有被转换为十六进制,并且只允许ODO值在30和39之间(而不是十六进制值30到39,它们是十进制数字0-9)。
<script language="JavaScript">
function checkFormStartShift()
{
var vODOstart = document.startshift.odostart.value;
vConvertHex = vODOstart.toString(16);
var vError = "no";
for (var i = 0; i < vConvertHex.length; i=i+2)
{
let result = vConvertHex.substr(i, 2);
if (result < 30 || result > 39)
{
alert("Starting KMs should be numbers only");
vError = "yes";
return false;
}
}
if (vODOstart < 0 && vError == "no")
{
return true;
}
else if (vODOstart <= 0)
{
alert("Starting ODO cannot be 0 or negative. Please correct.");
return false;
}
}
</script>
1条答案
按热度按时间jfewjypa1#
调试提示:
1.确保输入的是数字,而不是字符串
1.您正在与30和39进行比较,而不是与48和48+9进行比较。您正在考虑十六进制值“30”和“39”,但已经写入了十进制值。
1.对你的代码进行更多的检测以获得更多的信息:
改进建议