2011-04-07 142 views
0

我的网页上有一个html表单,其中包含一个图像,点击时会触发一个对话框页面。但是,表单提交会触发并强制进行提交。我怎样才能防止发生?Javascript表单提交问题

<script> 
    //trigger dialog 
    $('#submitIter').click(function(){ 
     $("#dialog-submit").dialog("open"); 
        return false 
    }); 

    $("#dialog-submit").dialog({    
     autoOpen: false, 
     resizable: false, 
     height: 200, 
     width: 200, 
     modal: true, 
     buttons: { 
      "Proceed": function(){ 
       //submit after user clicks proceed cannot seem to work 
       document.forms[0].submit(); 
       $(this).dialog("close"); 

      } 
     } 
    }); 
</script> 

<form action="{{ request.path }}" method="post" enctype="multipart/form-data"> 

    <input type="image" src="images/submit.png" id="submitIter"> 

</form> 
+0

表单在您设置按钮时是否提交?就是说,document.forms [0] .submit()在它到达那行代码时实际上正在执行? – Beez 2011-04-07 14:36:03

+0

@Beez提交条件是当用户单击对话框时继续进行 – 2011-04-07 14:53:11

+0

当我阅读@ EMMERICH的答案时,这变得很明显。现在它是有道理的。 不要忘记选择一个答案! :) – Beez 2011-04-07 14:55:42

回答

1
$('#submitIter').click(function(e){ 
    e.preventDefault(); // prevents default button action 
    $("#dialog-submit").dialog("open"); 
}); 
2
<form onsubmit="return false"> 

这应该做的伎俩。

2
$('form').submit(function(){ 
    $("#dialog-submit").dialog("open"); 
    return false; 
}); 

而不是您的点击处理程序,并将输入标记更改为提交标记。

+0

我似乎无法触发我的document.forms [0] .submit();添加返回false后 – 2011-04-07 15:36:36

+0

看到我的答案。 .submit()的返回false将永远不会允许您的表单提交,所以它必须是有条件的。 – Beez 2011-04-08 15:33:17

1
<script> 
    //trigger dialog 
    $('form').submit(function(){ 
     return $('form').data('confirmed') === true; 
    }); 

    $('#submitIter').click(function(){ 
     $("#dialog-submit").dialog("open"); 
     return false; 
    }); 

    $("#dialog-submit").dialog({ 
     autoOpen: false, 
     resizable: false, 
     height: 200, 
     width: 200, 
     modal: true, 
     buttons: { 
      "Proceed": function(){ 
       //submit after user clicks proceed cannot seem to work 
       $('form').data('confirmed', true); 
       $('form').submit(); 
       $(this).dialog("close"); 
      } 
     } 
    }); 
</script> 

基本上,设置表单数据的变量对象,它已经准备好您的继续按钮实际提交到服务器。如果该变量不存在,那么submit函数将返回false,这将允许您的对话框显示出来。如果已通过您的继续按钮确认,表格将提交。

我还没有测试过这个代码,但是如果它不起作用,希望你能理解这个概念。