Javascript:确认框

时间:2013-11-20 14:06:41

标签: javascript jquery html css

我有一个带有2个提交按钮的表单(是和否),

我有一个自定义div的javascript,用户必须确认他的选择。

我的问题是当我点击是按钮或没有按钮总是打开我2个div。

我怎么能解决这个问题?

我想要一个div打开是和其他打开。

样本:

FIDDLE DEMO

我的Javascript代码:

 function doConfirm(msg, yesFn, noFn) {
        var confirmBox = $("#confirmBox");
        confirmBox.find(".message").text(msg);
        confirmBox.find(".yes,.no").unbind().click(function () {
            confirmBox.hide();
        });
        confirmBox.find(".yes").click(yesFn);
        confirmBox.find(".no").click(noFn);
        confirmBox.show();
    }

    function doReject(msg, yesFn, noFn) {
        var rejectBox = $("#RejectBox");
        rejectBox.find(".message").text(msg);
        rejectBox.find(".yes,.no").unbind().click(function () {
            rejectBox.hide();
        });
        rejectBox.find(".yes").click(yesFn);
        rejectBox.find(".no").click(noFn);
        rejectBox.show();
    }

    $(function () {
        $("form").submit(function (e) {
            e.preventDefault();
            var form = this;
            doConfirm("Confirma a validação deste Caso Suporte?", function yes() {
                form.submit();
            });
            doReject("Rejeitar?", function no() {
                // do nothing
            });
        });
    });

3 个答案:

答案 0 :(得分:2)

每当提交表单时,您都会调用两个提示函数。两个按钮都是提交按钮,因此在每种情况下都会调用这两个函数。您需要一种方法来区分这两个按钮。尝试这样的事情:

$('form').find('button[type=submit]').click(function(e){
    e.preventDefault();
    $form = $(this).closest('form');
    if(this.name == 'yes'){
        doConfirm("Confirm that you want to validate?", function yes() {
            $form.submit();
        });
    } else {
        doReject("Confirm that you want reject?", function no() {
            // do nothing
        });
    }
});

JSFiddle

答案 1 :(得分:1)

使用以下内容:

var confirm; 

function doConfirm(msg, yesFn, noFn) {
    confirm = true;
        var confirmBox = $("#confirmBox");
        confirmBox.find(".message").text(msg);
        confirmBox.find(".yes,.no").unbind().click(function () {
            confirmBox.hide();
        });
        confirmBox.find(".yes").click(yesFn);
        confirmBox.find(".no").click(noFn);
        confirmBox.show();
    }

    function doReject(msg, yesFn, noFn) {
        confirm = false;
        var rejectBox = $("#RejectBox");
        rejectBox.find(".message").text(msg);
        rejectBox.find(".yes,.no").unbind().click(function () {
            rejectBox.hide();
        });
        rejectBox.find(".yes").click(yesFn);
        rejectBox.find(".no").click(noFn);
        rejectBox.show();
    }

    $(function () {
        $("form").submit(function (e) {
            e.preventDefault();
            var form = this;

            if(confirm){
            doConfirm("Confirm that you want to validate?", function yes() {
                form.submit();
            });} 
            else{
            doReject("Confirm that you want reject?", function no() {
                // do nothing
            });}
        });
    });

我用if语句做了一个简单的检查。单击“拒绝”时,确认等于true,如果单击拒绝按钮,则等于false。

小提琴:http://jsfiddle.net/5UbS6/3

答案 2 :(得分:1)

你的问题是你要同时调用doConfirm和doReject。根据他们点击的按钮(是或否)写一个条件。