2012-11-08 56 views
0

通過外按鈕提交我有一個表格形式不使用jQuery

<div id='formdiv'> 
<form action='purchase.php' method="POST" id="purchaseform"> 
...... 

<input type="submit" value="Add Purchase" /> 
</form></div> 

用戶提交form..he首先進行確認enteries後:

$('#purchaseform').submit(function(){ 
    $('#formdiv').hide(); 
    $('#confirmdiv').show(); 

return false; 
}); 

在確認DIV是:

<div id='confirmdiv'> 
data to be confirmed.... 
<input type="button" value="Confirm" id = "confirmform"/> 
<input type="button" value="Cancel" id = "cancelform"/> 


</div> 

我想一旦用戶點擊確認按鈕

012提交表單
$('#confirmform').click(function(){ 
     $('#purchaseform').submit(); 
     $('#formdiv').show(); 
     $('#confirmdiv').hide(); 
    }); 

但表單沒有提交...任何人都知道我在做什麼錯在這裏?

+0

嘗試'$( '#purchaseform')[0] .submit();' – Johan

回答

1

它,因爲當你調用$('#purchaseform').submit();它會再次讀你的第一條語句是

$('#purchaseform').submit(function(){ 
    $('#formdiv').hide(); 
    $('#confirmdiv').show(); 
    return false; 
}); 

嘗試使用隱藏的輸入,以指示在的數據都是確認與否。在您的形式把一個隱藏文本框

<div id='formdiv'> 
<form action='purchase.php' method="POST" id="purchaseform"> 

<input type="submit" value="Add Purchase" /> 
<input type="hidden" name="isconfirm" id="isconfirm" value="0" /> 
</form></div> 

然後在其他的語句把一個條件,你叫return false和其他功能

$('#purchaseform').submit(function(){ 
    var confirm = $("#isconfirm").val(); 
    if(confirm == 0) { 
     $('#formdiv').hide(); 
     $('#confirmdiv').show(); 

    return false; } 

})之前;你想有一個確認對話框,首先我認爲這是最好使用jQuery UI的對話框插件http://jqueryui.com/dialog/#modal-confirmation

這裏是代碼使用

然後改變這個問題,以及

$('#confirmform').click(function(){ 
    $("#isconfirm").val(1); //change the value to 1 
    $('#purchaseform').submit(); 
    $('#formdiv').show(); 
    $('#confirmdiv').hide(); 

}); 
1

這是非常合乎邏輯的,它沒有提交。畢竟,每當它嘗試提交時,它都會轉到您的提交事件處理程序,該處理程序始終返回false。您必須確保如果提交來自您的腳本而不是來自表單中的按鈕,則它會提交。一種方法是這樣的:

var confirmed = false; 
$('#purchaseform').submit(function(){ 
    if (!confirmed) 
    { 
     $('#formdiv').hide(); 
     $('#confirmdiv').show(); 

     return false; 
    } 
    else 
    { 
     confirmed = false; 
     return true; 
    } 
}); 

$('#confirmform').click(function(){ 
    confirmed = true; 
    $('#purchaseform').submit(); 
    $('#formdiv').show(); 
    $('#confirmdiv').hide(); 
}); 

這可以很容易地編輯,以滿足您的需求。另一種方法是將原始事件綁定到提交按鈕而不是實際的提交事件,但如果這樣做,如果您在表單中有文本字段並且用戶按下了按鈕,您可能會在稍後遇到麻煩在被選中時進入。然後直接提交而無需確認,而在上述解決方案中,它將整齊地要求確認。

0

要覆蓋時,形式

$('#purchaseform').submit(function(){ 
    $('#formdiv').hide(); 
    $('#confirmdiv').show(); 

    return false; 
}); 

被提交而是發生什麼事,你怎麼樣使用

$('#purchaseform').find(":submit").click(function(e){ 
    $('#formdiv').hide(); 
    $('#confirmdiv').show(); 

    return false; 
} 

或者,當然了,你可以在提交按鈕設置ID和使用它。

0

這是因爲你的$('#confirmform')。submit()函數再次調用第一個提交函數。

1

1 - 添加 「顯示:無」 到您的確認對話框

<div id='confirmdiv' style="display:none"> 
    data to be confirmed.... 
    </div> 
  • 刪除確認事件

    $('#confirmform').click .... 
    

2-初始化你的對話框

$("#confirmdiv").dialog({ 
     resizable: false, 
     height:140, 
     modal: true, 
     buttons: { 
      "Confirm": function() { 
       $('#purchaseform').submit(); 
      }, 
      "Cancel": function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 

3-測試你的代碼

4-這就是所有鄉親

+0

但是我怎麼把這個在我的表單提交功能..再次不會工作。或者我會以某種方式通過點擊提交按鈕並按下回車鍵來禁用提交表單! – calvin12

+0

行得通吧:)非常感謝 – calvin12

+0

幹得好, 我剛纔看到了你的評論。 – Anas