0

我在表单上有一个转发器,并使用 jquery 来验证转发器中的数据。我无法阻止页面使用 jquery 在客户端重定向。

这是我的jQuery:

function ValidateBid() 
{
    $(document).ready(function () {

        $(".btnSubmitBid").click(function (evt) {

            var msg = "";
            var bid = $(this).closest('td').find("input"); //this was the fun part

            if (isNaN(bid.val())) {
                msg = "Bid amount allowed in complete dollars only";
            }
            if (bid.val().indexOf('.') >= 0) {
                msg = "Bid amount may only contain numbers";
            }
            if (bid.val() > 999999) {
                msg = "If you want to place a bid for $" + bid.val() + " please contact customer service";
            }

            if (msg.length > 0) {

                $('#dialogText').text(msg);
                $('#dialog').dialog({
                    closeOnEscape: true, modal: true, width: 450, height: 200, title: 'Please correct the errors below:', close: function (event, ui) { $(this).dialog("destroy"); }
                });
                evt.preventDefault();
                return false;
            }
            else {
                return true;
            }

        });
    });

} //ends doc rdy

我试过使用 return false 和 evt.preventDefault(); 没有运气。

如果用户尚未登录,它会在 repeater_ItemCommand 事件后面的代码中重定向。

任何帮助将不胜感激。谢谢。

4

1 回答 1

2

在函数内部调用 document.ready 并不是一个好主意。您正在绑定到提交按钮的单击事件,我要做的是删除函数包装器并绑定到表单本身的提交事件,这样当验证发现错误时您只需返回 false,否则它将继续提交后,如果您觉得需要,返回 true 绝不会造成任何伤害:

$(document).ready(function () {

        $("form").submit(function (evt) {
//obv you would need to put the form id or class if you have more than one form on the page

            var msg = "";
            var bid = $(this).closest('td').find("input"); //this was the fun part

            if (isNaN(bid.val())) {
                msg = "Bid amount allowed in complete dollars only";
            }
            if (bid.val().indexOf('.') >= 0) {
                msg = "Bid amount may only contain numbers";
            }
            if (bid.val() > 999999) {
                msg = "If you want to place a bid for $" + bid.val() + " please contact customer service";
            }

            if (msg.length > 0) {

                $('#dialogText').text(msg);
                $('#dialog').dialog({
                    closeOnEscape: true, modal: true, width: 450, height: 200, title: 'Please correct the errors below:', close: function (event, ui) { $(this).dialog("destroy"); }
                });

                return false;
            }
            else {
                return true;
            }

        });
    });
于 2012-08-12T21:56:33.750 回答