2013-11-20 95 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。根據他們點擊哪個按鈕來寫條件(是或否)。