Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 阻止其他asp按钮执行提交操作_Javascript_Asp.net_Forms - Fatal编程技术网

Javascript 阻止其他asp按钮执行提交操作

Javascript 阻止其他asp按钮执行提交操作,javascript,asp.net,forms,Javascript,Asp.net,Forms,我正在建立一个上传表单。随着上传,用户需要输入一些数据,可能需要也可能不需要使用购物车。购物车按钮可从购物车中删除物品或完全清空购物车。但是,当我尝试使用这些按钮时,页面将执行我指示的提交操作,returnvalidateform <form enctype="multipart/form-data" runat="server" method="post" action="gpsFieldPics.py" name="uploadForm" id="uploadForm" onSubmi

我正在建立一个上传表单。随着上传,用户需要输入一些数据,可能需要也可能不需要使用购物车。购物车按钮可从购物车中删除物品或完全清空购物车。但是,当我尝试使用这些按钮时,页面将执行我指示的提交操作,returnvalidateform

<form enctype="multipart/form-data" runat="server" method="post" action="gpsFieldPics.py" name="uploadForm" id="uploadForm" onSubmit="return validateForm()">

<asp:Button ID="btnRemove" runat="server" Text="Remove Track"  OnClick="btnRemove_Click" /><br />
<asp:Button ID="btnEmpty" runat="server" Text="Empty Cart" OnClick="btnEmpty_Click"  />
<asp:ListBox ID="trkCart" runat="server" SelectionMode="Multiple"></asp:ListBox>

<input id="btnProcess" type="submit" value="Upload and Process" onclick="selectAllTracks()" /></form>
显然,我不能使用PageFunctions或Ajax调用代码隐藏函数,因为它们不是静态的,不返回任何内容

我也不能将表单拆分为两个表单,因为asp页面不能有两个runat=server的表单,而且我使用的是python cgi脚本,它似乎只恢复一个表单而不是两个表单的元素


关于我能做什么有什么想法吗?我唯一能想到的是,我必须有两个表单,一个基本html表单和一个asp.net表单。对于asp.net表单中的购物车,我需要在html表单中添加一个隐藏的列表框,并在购物车更新时对其进行更新。

看起来您正在为表单手动创建html标记,这很好。而不是 用

onSubmitEvent="return validateForm()", 
相反,将其设置为

onSubmit="return false"
这将导致表单无法提交任何内容,除非以编程方式要求提交。接下来,将一些JS添加到按钮中,以便像这样实际处理验证和提交

<script>
   function ValidateAndSubmit() {
       selectAllTracks();
       if (ValidateForm()) { 
         document.getElementById('uploadForm').submit(); 
       }
   }
</script>

...

<input id="btnProcess" type="submit" value="Upload and Process" onclick="ValidateAndSubmit()" />

如果我设置这个。。。onSubmit=return false我不能使用Hey@razor\u nate,如果这些按钮依赖于服务器端事件处理程序,那么您是正确的。您不能阻止表单以这种方式提交。您只需删除onSubmit=return false,这将允许其他按钮仍然导致表单提交,但btnProcess按钮仍然可以触发验证并在无效时停止该过程。
<script>
   function ValidateAndSubmit() {
       selectAllTracks();
       if (ValidateForm()) { 
         document.getElementById('uploadForm').submit(); 
       }
   }
</script>

...

<input id="btnProcess" type="submit" value="Upload and Process" onclick="ValidateAndSubmit()" />