JQUERY模态框确认表单提交

时间:2011-12-15 10:01:29

标签: javascript jquery forms submit

我有一个表单,当提交被点击时我想要一个模态框弹出一个YES和NO按钮我想要是和否按钮提交表单但我需要知道他们点击了哪个按钮。

这是我的代码

<input onclick="$.msgbox('confirm text',{
  buttons : [
    {type: 'submit', value:'YES'},
    {type: 'submit', value:'NO'}
  ]
}, function(buttonPressed) {

});" name="btnApply" id="btnApply" tabindex="41" src="images/btnsubmit.jpg" style="border-width: 0px;" type="image" />

我的问题是表单在用户点击提交时提交。

任何帮助或想法都会很棒

感谢

3 个答案:

答案 0 :(得分:2)

虽然我不熟悉$.msgbox插件,但您应该在<form>提交而不是按下按钮时打开模式对话框,因为表单也可以通过输入/提交返回某些输入字段(如文本框<input type="text|password">

var confirmed = false;
$('#myform').bind('submit', function() {
  if (confirmed) {
    return true;  // confirmation received, continue form submission process
  } else {
    $.msgbox(
      'my modal message',
      {
        buttons : [
          { type: 'button', value: 'YES' },
          { type: 'button', value: 'NO' }
        ]
      }, 
      function(buttonPressed) {
        confirmed = buttonPressed.value;  // Update the confirmed variable
        $('#myform').submit();  // re-submit the form
      }
    );  
    return false;  // cancel form submission
  }
});    

答案 1 :(得分:1)

添加返回false:

<input onclick="$.msgbox('Would you like a cash advance of up to £1000 whilst we process your loan?',{
  buttons : [
    {type: 'submit', value:'YES'},
    {type: 'submit', value:'NO'}
  ]
}, function(buttonPressed) {

}); return false;" name="btnApply" id="btnApply" tabindex="41" src="images/btnsubmit.jpg" style="border-width: 0px;" type="image" />

答案 2 :(得分:0)

不确定msgbox是否有关于您的代码的一些评论:

  1. 不要将JS逻辑直接附加到您的代码中,而是使用jQuery将click事件附加到您的标记(请参阅unobtrusive javascript):

    而不是

    <input onclick="$.msgbox('confirm text',{
    

    使用

    $('#btnApply').click(function(e) {
    
  2. 您可以通过将事件参数设置为false one property来停止点击处理:

    $('#btnApply').click(function(e) {
         e.preventDefault(); // stop click handling and so form submitting     
    
  3. 最后,在msgbox回调函数中处理表单提交与否:

    $.msgbox("Are you sure that you want to permanently delete the selected element?", {
    type: "confirm",
    buttons: [
        {
        type: "submit",
        value: "Yes"},
    {
        type: "submit",
        value: "No"},
    {
        type: "cancel",
        value: "Cancel"}
    ]
    }, function(result) {
        if(result == "Yes") // display the form on submit
             $('form').submit();
    });
    
  4. jsFiddle available.