$("#submit").click(function()
{
function checkZeros()
{
if ([0] == 0) {
if ([1] != '.') {
alert("alert message");
return false;
}
}
}
checkZeros($("#user-input-currency").val());
if(!$.isNumeric($("#user-input-currency").val())) {
alert("Please provide price in numeric value");
return false;
}
})
我具有检查用户输入货币第一个数字是否为0后跟“。”的功能。如果不是,则发出警报,并返回false,以便用户可以输入正确的值。但就我而言,我收到警报消息,但页面仍刷新。 这可能是什么问题? 下一个检查isNumeric的代码是否正确,会返回警报消息,并且不会刷新页面。
答案 0 :(得分:2)
您的return
不在点击处理程序的作用域内,因此即使checkZeros
返回false
,您的点击处理程序也不会停止。
您可以改用以下内容:
if(checkZeros($("#user-input-currency").val() === false)) return false;
这里使用严格的比较,因为您的函数没有return true
,并且函数默认返回undefined
。
为了获得更好的可读性,您可以更改函数,以便它始终返回布尔值并将if
简化为:
if(checkZeros($("#user-input-currency"))) return false;
p.s .:您的代码没有意义,是伪代码吗?
答案 1 :(得分:0)
您的点击处理程序回调不返回任何值,因为只有checkZeros函数返回的是假值。
因此,您必须将checkZeros函数要返回的值返回给点击处理程序,以便它不会继续提交。
$("#submit").click(function() {
function checkZeros() {
if ([0] == 0) {
if ([1] != '.') {
alert("alert message");
return false;
}
}
}
if (!$.isNumeric($("#user-input-currency").val())) {
alert("Please provide price in numeric value");
return false;
}
// in your case checkZeros function returns false, a function explicitly returns undefined if you haven't return any value, so you have to use conditional operator here
return !checkZeros($("#user-input-currency").val()) ? false : true;
})