在表单标签内时按钮单击事件未触发
Button click event not firing when inside form tags
我在网站上有一个联系表格,该表格通过电子邮件发送给网站所有者。
单击按钮 btnSubmit 运行后面的 vb 代码来发送电子邮件,在我使用 Bootstrap 设置表单样式之前它工作正常然后按钮单击事件停止触发。
如果我将按钮置于父表单标签之外,它会再次起作用,但我希望它位于父表单标签内,这样它将触发对必填字段的 HTML5 验证。
代码无效:
<div class="form-group">
<label for="txtName">Name:</label>
<asp:TextBox ID="txtName" runat="server" type="text" CssClass="form-control" required />
</div>
<div class="form-group">
<label for="txtEmail">Email address:</label>
<asp:TextBox ID="txtEmail" runat="server" type="email" CssClass="form-control" required />
</div>
<div class="form-group">
<label for="ddlProduct">Product</label>
<asp:DropDownList ID="ddlProduct" runat="server" CssClass="form-control" AppendDataBoundItems="True" DataSourceID="SQSItemNames" DataTextField="itemName" DataValueField="itemName">
<asp:ListItem></asp:ListItem>
</asp:DropDownList>
</div>
<div class="form-group">
<label for="txtMessage">Message</label>
<asp:TextBox ID="txtMessage" runat="server" type="text" CssClass="form-control" TextMode="MultiLine" Rows="5" required />
</div>
<asp:Button ID="btnSubmit" runat="server" Text="Send" CssClass="btn btn-primary pull-right" />
</form>
编辑:不确定这是否有所不同,但有问题的页面引用了母版页。
我使用 Razor,而不是 Web 表单,所以这在语法上可能有点偏差,但请尝试使用
<asp:input type="submit" ... />
这样你就明确地告诉按钮它要提交表单。
你的代码没有在后面的代码中调用你的事件,缺少在他的按钮中引用事件,例如:
<asp:Button ID="btnSubmit" runat="server" Text="Send" CssClass="btn btn-primary pull-right" OnClick="btnSubmit_Click" />
您应该只有一组表单标签 - 即打开和关闭。
如果您的表单中包含一个表单,那么您的功能就会失效。
如果您仍想使用 bootstrap 样式,您可以将表单标签替换为 div 标签。
我在网站上有一个联系表格,该表格通过电子邮件发送给网站所有者。
单击按钮 btnSubmit 运行后面的 vb 代码来发送电子邮件,在我使用 Bootstrap 设置表单样式之前它工作正常然后按钮单击事件停止触发。
如果我将按钮置于父表单标签之外,它会再次起作用,但我希望它位于父表单标签内,这样它将触发对必填字段的 HTML5 验证。
代码无效:
<div class="form-group">
<label for="txtName">Name:</label>
<asp:TextBox ID="txtName" runat="server" type="text" CssClass="form-control" required />
</div>
<div class="form-group">
<label for="txtEmail">Email address:</label>
<asp:TextBox ID="txtEmail" runat="server" type="email" CssClass="form-control" required />
</div>
<div class="form-group">
<label for="ddlProduct">Product</label>
<asp:DropDownList ID="ddlProduct" runat="server" CssClass="form-control" AppendDataBoundItems="True" DataSourceID="SQSItemNames" DataTextField="itemName" DataValueField="itemName">
<asp:ListItem></asp:ListItem>
</asp:DropDownList>
</div>
<div class="form-group">
<label for="txtMessage">Message</label>
<asp:TextBox ID="txtMessage" runat="server" type="text" CssClass="form-control" TextMode="MultiLine" Rows="5" required />
</div>
<asp:Button ID="btnSubmit" runat="server" Text="Send" CssClass="btn btn-primary pull-right" />
</form>
编辑:不确定这是否有所不同,但有问题的页面引用了母版页。
我使用 Razor,而不是 Web 表单,所以这在语法上可能有点偏差,但请尝试使用
<asp:input type="submit" ... />
这样你就明确地告诉按钮它要提交表单。
你的代码没有在后面的代码中调用你的事件,缺少在他的按钮中引用事件,例如:
<asp:Button ID="btnSubmit" runat="server" Text="Send" CssClass="btn btn-primary pull-right" OnClick="btnSubmit_Click" />
您应该只有一组表单标签 - 即打开和关闭。
如果您的表单中包含一个表单,那么您的功能就会失效。
如果您仍想使用 bootstrap 样式,您可以将表单标签替换为 div 标签。