事件加载了两次

时间:2018-03-27 06:31:06

标签: javascript jquery asp.net

在一个页面中,我有两个相同的HTML表单,一个是通过jquery动态生成的,一个是asp.net。我已经在每个相同页面的点击按钮上添加了验证。

第一个按钮

var s = $(' <input type="button" ID="btnFrmSubmit" runat="server" Text="Submit"  value="FrmSubmit" />');
$("#mainTbl").after(s);

第二个按钮

哪个在</asp:Panel>

<input name="btnFrmSubmitn" type="button" id="btnFrmSubmitn" runat="server"  value="Submitn"/>

第一个jquery表单以

开头
$(document).ready(function () {
    $(document).on("click", "[id*=btnFrmSubmit]", function () {
        alert("hi");  
        //validation Part
        alert("v1");  
    });
});

第二个jquery表单以

开头
$(function () {  
    $("#btnFrmSubmitn").click(function () {
        alert("hi...");  
        //validation Part
        alert("V2");  
    });
});
如果我点击第二个提交按钮btnFrmSubmitn

问题就开启了 然后发生以下序列

1) alert("hi...");
2) alert("V2");
3) alert("hi");
4) alert("v1");
不应该发生

3)4)序列,任何想法都可以解决这个问题。

1 个答案:

答案 0 :(得分:1)

这一行:

$(document).on("click", "[id*=btnFrmSubmit]", function () {

选择ID中包含字符串'btnFrmSubmit'的所有元素。如果您希望仅应用于第一个按钮,请完全选择该按钮的ID,而不是*

$(document).on("click", "[id=btnFrmSubmit]", function () {

或者,更简洁

$(document).on("click", "#btnFrmSubmit", function () {