php - jQuery 提交前确认

标签 php javascript jquery

<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 中有一个错误(我假设它是一个错误),如果您的表单上的元素具有 submitname,则触发 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's answer .

再次编辑

这是 Chris Platt's answer 的修改版本.它只是等待 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;
            }
        }
    });

});

关于php - jQuery 提交前确认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9436199/

相关文章:

php - 如何使用 nikic/PHP-Parser 解析和列出所有类方法

PHP POS(销售点)在 GoDaddy 共享主机下不工作

javascript - 单击加载事件上的按钮

Javascript 正则表达式替换并添加找到的所有元素到数组

javascript - 如何使用 DOM 通过单选按钮更改背景大小 (JAVASCRIPT)

javascript - 如何按数据属性对 div 顺序位置进行排序

jquery - 当动态添加的文本区域为空时禁用提交按钮 - jQuery

php - 安装 SilverStripe 时出现 RedisException

php - 使用 html 和 JavaScript 的表单创建测验

jQuery 淡入和淡出