簡體   English   中英

jQuery提交前確認

[英]jQuery Confirm Before Submit

<form action ="/submit-page/" method='post' class="editable">
    <fieldset>
    <select name="status" id='status'>
        <option value="Submitted">Submitted</option>
        <option value="Canceled">Canceled</option>
              <option value="Application">Application</option>
    </select>
          <input type="submit" name="submit" value="SAVE">

</form>

我上面有一個表單:當我單擊下拉值“已取消”並單擊“保存”按鈕時,我想使用帶有“是”和“否”按鈕的警告消息給警報框。

如果用戶單擊“是”,則根據需要將其帶到表單操作參數中的“提交頁面”。 如果用戶單擊“否”,則保留在同一表單頁面上而不刷新頁面。 可以在jQuery中完成嗎?

嗯...這里的其他答案有問題:它們對您的HTML不起作用。

jQuery中有一個錯誤(我認為這是一個錯誤),如果表單上的元素具有name submit ,則觸發表單的submit事件將不起作用。

您將需要從input type="submit"按鈕中刪除name屬性,或者簡單地為其指定一個不同於“ submit”的名稱。

的HTML

<form action ="/submit-page/" method='post' class="editable">
  <fieldset>
    <select name="status" id='status'>
      <option value="Submitted">Submitted</option>
      <option value="Canceled">Canceled</option>
      <option value="Application">Application</option>
    </select>
    <input type="submit" value="SAVE" name="submit-button"/>
  </fieldset>
</form>​

jQuery的

$('#status').on('change', function() {

    var $this = $(this),
        val = $this.val();

    if (val === 'Canceled' && confirm("are you sure?")) {
        $this.closest('form').submit();
    }
});​

的PHP

$submitted = !empty($_POST['submit-button']);

if($submitted)
{
    // Submit button was pressed.
}
else
{
    // Form was submitted via alternate trigger.
}

工作: http//jsfiddle.net/xixonia/KW5jp/

不起作用: http : //jsfiddle.net/xixonia/KW5jp/1/

編輯

此后,您已經更新了問題,此答案不再是您所尋找的有效解決方案。 相反,請看克里斯·普拉特Chris Platt)的答案

重新編輯

這是克里斯·普拉特Chris Platt)的答案的修改版本。 它只是等待直到DOM准備就緒(元素已加載),然后才執行第一個$(...)包含的邏輯。

$(function() { // this first jQuery object ensures that...

    /// ... the code inside executes *after* the DOM is ready.

    $('form.editable').submit(function(){
        if ($('#status').val()=='Canceled') {
            if (!confirm('Warning message here. Continue?')) {
                return false;
            }
        }
    });

});
$('form.editable').submit(function(){
    if ($('#status').val()=='Canceled') {
        if (!confirm('Warning message here. Continue?')) {
            return false;
        }
    }
});

是的,可以這樣做:

$('#status').change(function(){
   var val = $(this).val();
   if( val == 'Submitted' ) {
     $('.editable').submit();
     return false;
   } else if (val == 'Canceled')
   {
      var answer = confirm('are you sure');
      return false;
   } else {
    ... 
   }
});

與Chris Pratts解決方案相反,此操作將在您更改下拉框中的所選值后立即執行。 一旦您單擊提交按鈕,他的工作便會完成。

截取jQuery中表單提交的最直接方法是這樣的:

$("form.editable").submit(function(){
    if(confirm("Really submit the form?")) {
        return true;
    } else {
        return false; //form will not be sumitted and page will not reload
    }
});

有關更多詳細信息,請參見http://jqapi.com/#p=submit

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM