jQuery即兴:表单在Yes或No ic点击之前提交

时间:2010-07-02 06:07:49

标签: jquery forms jquery-plugins

我正在使用jquery Impromptu提交我的一个表单。 在上面提到的URL中,我使用的是示例2。

现在,当我尝试在表单提交中加入相同内容时,表单即使在我按下“是/否”按钮之前也会提交。

我使用以下代码行提交表单

<input type="image" name="delete" src="images/delete.png" onclick="$.prompt('Are you sure??',{ buttons: { Ok: true, Cancel: false } })">

我确信我错过了什么。 有人可以帮助我吗?

谢谢,
Alloi

3 个答案:

答案 0 :(得分:1)

尝试这样的事情:

<input type="image" name="delete" src="images/delete.png" onclick="$.prompt('Are you sure??',{ buttons: { Ok: $('form#foo').submit(), Cancel: false } }); return false;">

更好的是,尝试让你的JS不引人注目:

<input type="image" name="delete" src="images/delete.png" />

$('input[name=delete]').click(function() {
    $.prompt('Are you sure??',{
        buttons: {
            Ok: $('form#foo').submit(),
            Cancel: false
        }
    });
    return false;
});

答案 1 :(得分:1)

Impromptu在执行前不会等待。所以你不应该在用户确认操作之前提交。

像这样使用:

<input type="image" name="delete" src="images/delete.png" onclick="confirmAndDelete()">

使用javascript函数:

function confirmAndDelete(){

    var deleteFunc = function()
    {
        $('form#foo').submit();
    };

    $.prompt("Are you sure?", 
             {
               title: "Delete Confirm",
               buttons: { "Yes": true, "No": false },
               submit: function (e, val, m, f) {                            
                            if (val == true)
                                deleteFunc();
                            else
                                console.log('Delete not confirmed!');
                        }
              });

}

答案 2 :(得分:0)

像这样的花哨提示会在页面上/上方显示一条消息,但他们不会暂停执行,如alertconfirm。 (这就是他们在the docs page上所说的“这不是一个模态替换......”)所以尽管你正在显示提示,表单提交仍在继续

处理此问题的常用方法是显示提示但取消表单提交,然后如果用户说“是”,则以编程方式提交表单。

基本上,你:

  • 在表单上设置提交处理程序,以便在提交
  • 时取消提交
  • 设置图片点击以告知表单取消提交并显示提示
  • 在提示的“是”按钮上设置处理程序以提交表单