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

时间:2014-12-22 20:44:42

标签: javascript asp.net forms

我正在构建一个上传表单。在上传时,用户需要输入一些数据,可能会也可能不会与购物车一起使用。购物车按钮从购物车中删除列表或完全清空购物车。但是,当我尝试使用这些按钮时,页面执行我指定的提交操作,返回validateForm()....

<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>

顺便说一下,这不是完整的形式。我尝试使用这个... UseSubmitBehavior =“false”,但它不会像我想象的那样工作。以下是我正在尝试使用的函数背后的代码....

protected void btnRemove_Click(object sender, EventArgs e) 
{
    if (trks.Count &gt; 0)
    {
        if (trkCart.SelectedIndex &gt; -1)
        {
            trks.RemoveAt(trkCart.SelectedIndex);
            this.DisplayTrackCart();
        }
        else
        {
            lblMessage.Text = "Please select the item you want to remove.";
        }
    }
}

protected void btnEmpty_Click(object sender, EventArgs e)
{
    if (trks.Count &gt; 0)
    {
        trks.Clear();
        trkCart.Items.Clear();
    }
}

我显然不能使用PageFunctions或Ajax来调用代码隐藏函数,因为它们不是静态的,也不会返回任何内容。

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

关于我能做什么的任何想法?我唯一能想到的就是我必须有两种形式,一种是基本的html形式,另一种是asp.net形式。对于asp.net表单中的购物车,我需要在html表单和功能中添加一个隐藏的列表框,以便在购物车更新时更新它。

1 个答案:

答案 0 :(得分:0)

看起来您正在为表单手动创建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()" />