2015-04-20 98 views
0

我一直在为此打动我的大脑。我有一个与表单提交按钮相关的onclick事件。如果我删除了onclick事件并使用本机提交,它就可以工作。然后我把onclick放回来并添加submit()。表单提交,但PHP脚本失败。不幸的是我需要on(点击)才能使更多其他脚本工作,因为这种方式不适用于标准的javascript onclick。这里是我的代码示例任何提示都表示赞赏。onclick事件干扰本地提交表单操作

<form id="target" action="deliorder.php" method="post" onSubmit="rmvspaces()"> 
<input type="hidden" name="Subject" id="Subject" value="Deli Order"> 
<input type="text" name="TotalOrder" id="TotalOrder" > 
<textarea name="Details" id="Details" autocomplete="off"></textarea> 
<div class="inpcont"> 
Name <input name="Name" id="Name" class="entry" type="text"></div> 
<div class="inpcont"> 
Email <input name="Email" id="Email" class="entry" type="text"></div> 
<div class="inpcont"> 
Phone <input name="Phone" id="Phone" class="entry" type="text"></div> 
<div class="inpcont"> 
Zip <input name="Zip" id="Zip" class="entry" type="text"></div> 
<input name="Submit" id="Submit" class="btn" type="submit" value="SUBMIT" style="margin-left:255px; margin-top:20px; margin-bottom:10px;"> 
</form> 

</div> 

</div> 
</div> 

<script>//Add new item button 

$(document).ready(function() { 
    $('#itmid').click(function() { 
     addItem($('#itmid').val()); 
    }); 
}); 

$(".btn").on("click",function(event){ 
event.preventDefault(); 
var content = $('#order').html(); 
$("#ordertxt").html(content); 
upAmt(); 
duporder(); 
totorder(); 
rmvit(); 
copyorder(); 
$("#target").submit(); 
}); 
</script> 
+0

尝试在您的表单onSubmit属性中添加'return false'。 –

+0

remove'onSubmit =“rmvspaces()”'将函数添加到您的'.btn'点击事件中 – madalinivascu

回答

1

的浏览器的行为是一次按钮点击事件被触发,它会如果有任何对之后的通话将被传递给父按钮执行事件处理element..If有任何书面处理对于将执行的父母.. 基本上,当你点击一个按钮,内部你也点击父元素..这就是内部的行为..希望这将是有用的信息

如果你使用事件.stopPropagation(),那么调用将不会传递给父级。

对于IE:window.event.cancelBubble = true

+0

Tiger做到了。我替换了event.preventDefault();与event.stopPropagation()并添加window.event.cancelBubble = true。有趣的是,我在windows上获得了一个使用explorer的双重提交。这可能是我的PHP脚本。你认为删除event.preventDefault();会导致这种情况?在mac safari上正常工作。今晚我会做更多的测试。 –

+0

只是关于双提交问题的说明:我也删除了$(“#target”)。submit();使用本机提交操作,所以这不会导致问题。 –