2013-11-20 132 views
1

我有一个2提交按钮(是和否)的形式,Javascript:确认框

和我有JavaScript的自定义股利,用户必须确认他的选择。

我的问题是当我点击yes按钮或no按钮时总是打开我的2个div。

我该如何解决?

我想要一个div打开是的,其他的没有。

DEMO:

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 
      }); 
     }); 
    }); 
+0

提交表单和你通话双方doconfirm和doreject上提交。所以你会得到两个功能运行 – Nanne

回答

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

使用以下命令:

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

1

你的问题是,你在呼唤都doConfirm和doReject。根据他们点击哪个按钮来写条件(是或否)。