我正在构建一个上传表单。在上传时,用户需要输入一些数据,可能会也可能不会与购物车一起使用。购物车按钮从购物车中删除列表或完全清空购物车。但是,当我尝试使用这些按钮时,页面执行我指定的提交操作,返回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 > 0)
{
if (trkCart.SelectedIndex > -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 > 0)
{
trks.Clear();
trkCart.Items.Clear();
}
}
我显然不能使用PageFunctions或Ajax来调用代码隐藏函数,因为它们不是静态的,也不会返回任何内容。
我也不能将表单分成两种形式,因为一个asp页面不能有两个表格与runat = server,因为我使用的是python cgi脚本,它似乎只能恢复一个表单的元素而不是两个。
关于我能做什么的任何想法?我唯一能想到的就是我必须有两种形式,一种是基本的html形式,另一种是asp.net形式。对于asp.net表单中的购物车,我需要在html表单和功能中添加一个隐藏的列表框,以便在购物车更新时更新它。
答案 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()" />