1

为了防止意外提交并确保用户仔细检查他输入的所有信息,我通过弹出另一个按钮来延迟提交表单,询问他是否真的要提交......

不幸的是,当用户单击“否”并稍后使用“是”按钮提交表单时,它将提交两次。当用户之前没有点击“否”时,它第一次工作......

我在这里准备了一个小jsfiddle,这就是我的代码:

$('#form').on('click','#submitbutton',function(e){
        e.preventDefault()
        $('#formchecker').show()
        $('#doit').click(function(e2){
            e2.preventDefault()
            alert('I will submit as you say')                
        })
        $('#dont').click(function(e2){
            e2.preventDefault()
            $('#formchecker').hide()
        })
})

您可以看到,在提交之前单击“nah”时选择“是”,会有多个警报框。有人暗示为什么它会这样?

4

2 回答 2

4

每次单击提交按钮时,您都会将单击事件添加到是和否按钮,但您永远不会清除它们,因此如果您要单击提交,然后单击 5 次,最后单击“是”将触发 5 次。

您应该unbind在绑定新的点击事件之前绑定点击事件,或者不要在提交按钮的点击事件中绑定点击事件。

于 2012-07-11T20:02:55.427 回答
3

您应该监听 onSubmit 事件而不是 onClick 事件。

于 2012-07-11T20:01:40.027 回答