2015-09-04 60 views
1

我正在使用以下表單並在我的動態html頁面中提交按鈕。如何有條件地提交表單?

<form method=\"post\" class=\"my-form\" >

<input type=\"submit\" name=\"submitButton\" value=\"Submit\" id=\"button1\" />

我所試圖做的是當一個特定的輸入由用戶提供,則顯示一個警告框,詢問用戶要提交更改或只是留在同一頁面上而不提交更改。

我可以顯示警報框(在stackoverflow成員的幫助下),但隨着window.alert我應該添加到JavaScript,所以如果用戶在window.confirm上點擊「取消」並且表單被提交如果用戶在window.confirm上點擊「ok」

JavaScript的例子是在fiddle

$(document).on('input', '.my-input', function(){ 
    $(this).closest('form').addClass('changed'); 
}); 

$(document).on('submit', '.my-form', function(e){ 
    if($(this).hasClass('changed')){ 
    var x=window.confirm("You have set a unique threshold for one or more states below. Are you sure you want to reset them all?") 
    if (x) 
     window.alert("Thresholds changed!") 
    else 
     window.alert("Thresholds not changed!") 
    } 
    $(this).removeClass('changed'); 
    e.preventDefault(); 
}); 

回答

4

你只需要改變你的邏輯,這樣當用戶拒絕確認框preventDefault()只調用。試試這個:

$(document).on('submit', '.my-form', function (e) { 
    if ($(this).hasClass('changed')) { 
     var allowSubmit = window.confirm("You have set a unique threshold for one or more states below. Are you sure you want to reset them all?") 
     if (!allowSubmit) 
      e.preventDefault() 
    } 
}); 

Example fiddle

如果你點擊「確定」,你會看到的形式提交(和的jsfiddle警告使用POST請求 - 但這是正常的),而點擊'取消'什麼也不做。

+0

謝謝羅裏,它正常工作,因爲我一直在尋找。有一個疑問:如果我輸入一個值並單擊提交按鈕,我會看到帶有「ok」和「cancel」按鈕的警報窗口。如果我點擊取消,那麼頁面將保持原樣並且表單不會被提交(這是預期的)。但是,如果我再次點擊提交,那麼表單將直接提交,而不顯示帶有「ok」和「cancel」按鈕的警報窗口。 我怎樣才能確保警報窗口顯示每次提交被點擊(如果在文本框中的值改爲) – 300

+0

那是因爲你需要刪除'removeClass()'行 - 我更新了我的回答對你 –

+0

再次感謝羅裏。它現在工作很完美。 – 300

0

你也可以在提交函數處理程序中返回false,它應該可以工作。以this question爲例。