允许onclick函数只执行一次

允许onclick函数只执行一次

问题描述:

我有一个gridview,其中所有的列都是文本框。我通过jQuery实现了文本框上的onclick函数,以便当用户单击文本框时,会单击一个隐藏按钮,然后更新一个updatepanel并重新加载页面。此外,文本框应该是可编辑的。我的问题是,每次单击文本框进行编辑并重新加载页面时,都会触发该功能。如何预防它?允许onclick函数只执行一次

这里是我的文本框代码:

注:这是一个文本框只是代码。所有的文本框都使用相同的onclick功能可按

<asp:TextBox ID="txtLoginName" Onclick='<%# "timepass(" + Eval("userid") + ");" %>' 
Text='<%# Eval("LoginName")%>' runat="server"></asp:TextBox> 

,这里是触发后面的功能代码

<script type="text/javascript"> 
     function timepass(pass) { 
      $("#btnHidden").trigger("click"); 
     } 
    </script> 

我想与一个隐藏的列进去值会更改的gridview的jQuery代码每次单击一个文本框,但由于该行中有许多文本框,因此它变得越来越复杂,因此看起来不可行。任何人都可以提出更好的选择吗

+0

你应该以某种方式记住,文本框被点击 – 2014-08-28 12:56:06

+0

什么是侧板的用途样品。它是什么更新。此外,为什么需要在单击文本框时发生此更新。 – PaulBinder 2014-08-28 13:03:14

+0

@PaulBinder当点击文本框时,还有2个gridview填充。在点击文本框时传递一个id,在两个gridviews中填充详细信息 – nitinvertigo 2014-08-28 13:06:59

为了避免页面刷新,您可以简单地使用Ajax调用。

function ajaxCall(passedId){ 
    $.post('url', { id: ajaxCall}, 
     function(returnedData){ 
      console.log(returnedData); 
      //update grid view with complex javascript 
     }); 
    } 

然后,你可以简单地使用的赛义的绑定代码修改后的版本

$("yourselector").click(function(event) { 
    var eventId = event.target.id; 
    ajaxCall(eventId); 
    $("#" + eventId).unbind("click", handler);; 
}); 

此结合到所有的文本框,但没有绑定到特定的文本框中。此外,根据您使用的gridview类型,某些第三方网格like jQuery Grid允许您将JSON对象绑定到它们。

它绑定到一个jQuery网格

$.post('url', { id: "value" }, 
    function (returnedData) { 
     console.log(returnedData); 
     var source = 
     { 
      datatype: "json", 
      datafields: [ 
       { name: 'CompanyName' }, 
       { name: 'ContactName' }, 
       { name: 'ContactTitle' }, 
       { name: 'Address' }, 
       { name: 'City' }, 
       { name: 'Country' } 
      ], 
      localdata: data 
     }; 
     var dataAdapter = new $.jqx.dataAdapter(returnedData); 
     $("#jqxgrid").jqxGrid(
     { 
      source: dataAdapter, 
      columns: 
      [ 
       { text: 'Company Name', datafield: 'CompanyName', width: 250 }, 
       { text: 'Contact Name', datafield: 'ContactName', width: 150 }, 
       { text: 'Contact Title', datafield: 'ContactTitle', width: 180 }, 
       { text: 'City', datafield: 'City', width: 120 }, 
       { text: 'Postal Code', datafield: 'PostalCode', width: 90 }, 
       { text: 'Country', datafield: 'Country', width: 100 } 
      ] 
     }); 
    }); 
+0

嗨,Ajax调用对我来说不可行,因为我在这个gridview下的更新面板中有两个gridview(不是在后面的代码中创建的) 。使用Ajax意味着使用静态webmethods,并使该方法填充gridview方式太复杂。我也会保留你的方法作为选项,但我正在寻找更简单的方法 – nitinvertigo 2014-08-28 14:02:21