我正在开发asp.net应用程序。在我的应用程序的母版页中,我有一个侧边栏div。我在其中插入了一个表单,用于订阅,如下所示:
<form method="post" action="https://app.icontact.com/icp/signup.php" name="icpsignup" id="icpsignup3297" accept-charset="UTF-8" onsubmit="return verifyRequired3297();" >
...
<input type="submit" name="Submit" value="Get Deals">
<form>
按钮点击调用的javascript函数如下所示:
<script type="text/javascript">
var icpForm3297 = document.getElementById('icpsignup3297');
if (document.location.protocol === "https:")
icpForm3297.action = "https://app.icontact.com/icp/signup.php";
function verifyRequired3297() {
alert('testing');
if (icpForm3297["fields_email"].value == "") {
icpForm3297["fields_email"].focus();
alert("The Email field is required.");
return false;
}
return true;
}
</script>
当我点击提交按钮时,页面重新加载但是表单没有重定向到其他页面(重定向URL)是因为代码在母版页中吗?甚至没有显示测试警报。
如果我在没有母版页的新asp.net页面中使用此代码,它可以完美地运行
答案 0 :(得分:0)
基于OP的问题评论......
嵌套<form>
标记是否无效HTML(无论它们是否标记为runat="server"
)。例如,这是不允许的,并且会失败......
<form>
...
<form>
...
</form>
...
</form>
我唯一能想到的就是以下......
<form>
<form runat="server">
<form>
字段填充新的<input type="hidden">
<form>
标记,保留用户将要使用的控件/布局onclick="submitMyForm();return false;"
之类的处理程序设置为原始<input type="submit">
(或使用普通按钮替换它 - 基于HTML或ASP.NET - 并将处理程序设置为该javascript函数可能看起来像这样......
function submitMyForm(){
document.getElementById("myNewFormCtrl1").value =
document.getElementById("<%=myOldFormCtrl1.ClientId%>").value;
...
document.getElementById("myNewForm").submit();
}
请记住,必须为<input type="hidden">
提供name
属性,该属性将传递给接收表单的页面。您还必须为其提供id
属性,该属性将由函数中的getElementById
使用。这些不必须相同,因此我建议您将id
设置为明显且独特的内容。
如果有人有一个更好,更简单,更清洁的解决方案 - 我真的很有兴趣看到它,因为我认为上述内容并不好,但应该有效。