jQuery刷新页面,即使返回false

时间:2018-07-10 13:19:58

标签: javascript jquery

$("#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的代码是否正确,会返回警报消息,并且不会刷新页面。

2 个答案:

答案 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;

})