【问题标题】:OnClientClick javascript for button is not working按钮的 OnClientClick javascript 不起作用
【发布时间】:2014-06-13 05:10:36
【问题描述】:

场景是这样的:我有一个 asp.net GridView 控件和一个保存按钮。最初,我在页面加载时禁用了保存按钮。当 gridview 中的任何下拉菜单发生更改时,我想启用保存按钮。到目前为止它工作正常。

我有一个 javascript 函数可以发出警告消息,询问用户是否要继续保存,但此函数没有通过保存按钮触发。

如果我从下拉列表中删除该函数以启用保存按钮,则保存按钮会调用 onclientclick 函数。否则,它不会。

下面是代码。

<script type="text/javascript">
function Confirm() {
    if (confirm("Are you sure," + " you want to assign the respective factories ?") == true)
       return true;
    else
       return false;
}
function Success() {
    alert('Data has been saved successfully.');
}
function EnableSave() {
    $('#btnSave').prop("disabled", false);
}
}
</script>

<asp:GridView ID="gvReceiptTrans" 
              runat="server" 
              AutoGenerateColumns="false" 
              CssClass="mGrid" 
              PagerStyle-CssClass="pgr" 
              AlternatingRowStyle-CssClass="alt"
              OnRowDataBound="grid_RowDataBound" 
              EmptyDataText="No Data Available">
    <Columns>
        <asp:BoundField HeaderText="RAN" HeaderStyle-CssClass="mGridHeaderStyle" ItemStyle-Width="80px" ItemStyle-HorizontalAlign="Center"  DataField="receipt_ack_nbr" />
        <asp:BoundField HeaderText="IPN" HeaderStyle-CssClass="mGridHeaderStyle" ItemStyle-Width="100px" ItemStyle-HorizontalAlign="Center" DataField="item_id" />
        <asp:BoundField HeaderText="PO" HeaderStyle-CssClass="mGridHeaderStyle" ItemStyle-Width="100px" ItemStyle-HorizontalAlign="Center" DataField="po_nbr" />
        <asp:BoundField HeaderText="PO Line" HeaderStyle-CssClass="mGridHeaderStyle" ItemStyle-Width="80px"  ItemStyle-HorizontalAlign="Center" DataField="po_line_nbr" />
        <asp:BoundField HeaderText="Supplier" HeaderStyle-CssClass="mGridHeaderStyle" ItemStyle-Width="300px" ItemStyle-HorizontalAlign="Center" DataField="supplier" />
        <asp:BoundField HeaderText="Model" HeaderStyle-CssClass="mGridHeaderStyle" ItemStyle-Width="100px" ItemStyle-HorizontalAlign="Center" DataField="model" />
        <asp:BoundField HeaderText="Description" HeaderStyle-CssClass="mGridHeaderStyle" ItemStyle-Width="300px" ItemStyle-HorizontalAlign="Center" DataField="description" />
        <asp:BoundField HeaderText="Qty Delivered" HeaderStyle-CssClass="mGridHeaderStyle" ItemStyle-Width="110px" ItemStyle-HorizontalAlign="Center" DataField="qty" />
        <asp:TemplateField HeaderText="Factory"    HeaderStyle-CssClass="mGridHeaderStyle" ItemStyle-Width="120px">
            <ItemTemplate>
                <asp:DropDownList ID="ddlFactory" runat="server" Width="120px" onchange="return EnableSave();" CssClass="items" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>



<asp:Button ID="btnSave" runat="server" Text="Save" Width="120px" Height="30px" OnClientClick="return Confirm();" OnClick="btnSave_Click" />

要求是在点击保存按钮时调用 onclientclick() 函数,然后它应该去主点击事件。

我该如何解决这个问题?

【问题讨论】:

    标签: javascript asp.net


    【解决方案1】:

    如下更改您的Confirm 方法,

    function Confirm() {
        return confirm("Are you sure," + " you want to assign the respective factories ?");
    }
    

    【讨论】:

      【解决方案2】:

      这样试试

      <asp:Button ID="btnSave" runat="server" Text="Save" Width="120px" Height="30px"   OnClientClick="return confirm('Are you certain you want to delete this 
      product?');" OnClick="btnSave_Click" />
      

      使用这个 jquery 代码。它工作正常

      <asp:DropDownList ID="ddlFactory" runat="server" Width="120px"  CssClass="items" DataSourceID="SqlDataSource1"/>
      

      还有你的 jquery

      <script type="text/javascript">
              $(document).ready(function () {
                  $('.items').on('change', function () {
                      alert('change');
                  });
              });
          </script>
      

      【讨论】:

      • 我想将其标记为答案,但想知道我的方法有什么问题?
      • 为什么你不使用 jquery 。 $('#ddlFactory').on('change',function(){ $('#btnSave').prop("disabled", false); });
      • 是的,我尝试过这种方式,但由于下拉菜单位于 gridview 内,因此它没有直接通过 id 捕获元素
      • 在下拉列表中添加一个类。
      【解决方案3】:

      正如您提到的要求,我已经测试了您的代码。它工作正常。 “onclientclick”在我的最后开火。你能把你完整的aspx代码贴出来让我们看看吗?

      谢谢

      【讨论】:

        【解决方案4】:

        试试这个,

                 OnClientClick="return confirm();"
        

        【讨论】:

        • no Confirm change to confirm and function name also, C caps to small
        【解决方案5】:

        我认为你应该在 javascript 函数中调用服务器端事件..

        供您参考...

        http://forums.asp.net/t/1794512.aspx?Call+Server+Side+Event+From+JavaScript

        【讨论】:

          猜你喜欢
          • 2021-09-05
          • 1970-01-01
          • 2010-11-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多