在 IE10 中获取 JavaScript onClientClick 事件时遇到问题
Having issues getting JavaScript onClientClick event working in IE10
我对编码还是很陌生,我的 JavaScripting 几乎不存在。我试过寻找另一个答案,但我不确定我在寻找什么/在寻找什么,如果这是重复的,我深表歉意。无论如何...
我有一个 asp.net c# 页面,它可以将一系列数据从数据库中提取到 GridView 中。我想为页面用户提供的选项之一是能够删除行,作为其中的一部分,我在页面中包含了一些 JavaScript 以提示他们仔细检查是否要删除提前删除。我的问题是虽然脚本在 Chrome 中运行良好,但在 IE10 中不起作用(可能是因为 Chrome 更宽容)。谁能告诉我哪里可能出错了?
我的JavaScript函数是:
<script type="text/javascript">
function confirmDelete(id) {
try {
console.log('trying');
if (confirm('Do you really want to delete this entry?')) {
$('#' + id).html('Processing... <i class="fa fa-spinner fa-spin"></i>').attr('disabled', 'disabled').addClass('disabled');
return true;
}
$('#' + id).html('<span class="btn btn-small btn-spinner">Delete</span>').removeClass('disabled').removeAttr('disabled');
} catch (e) { console.log(e.message);}
return false;
}
</script>
并且它链接到以下 GridView:
<asp:UpdatePanel ID="upCurrentServicesGrid" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:GridView ID="grdviewCurrentSystems" CssClass="table-data" UseAccessibleHeader="true" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:BoundField DataField="systemName" HeaderText="System" ItemStyle-Width="10%"/>
<asp:TemplateField HeaderText="Status" ItemStyle-Width="46%">
<ItemTemplate>
<div style="display:none">
<asp:TextBox ID="RowId" runat="server" Text='<%# Eval("id") %>' />
</div>
<div style="display:none">
<asp:TextBox ID="SelectedVal" runat="server" Text='<%# Eval("systemStatus") %>' />
</div>
<pfp:DropDownList ID="pfpdropSystemStatus" CausesValidation="false" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Further information" ItemStyle-Width="50%">
<ItemTemplate>
<div>
<pfp:TextBox ID="pfptxtSystemStatusInfo" TextMode="MultiLine" MaxLength="300" CssClass="textarea1" runat="server" Text='<%# Eval("systemInformation") %>' />
</div>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Delete" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle">
<ItemTemplate>
<div>
<asp:LinkButton ID="lnkbtnDelSystem" CausesValidation="false" OnClick="lnkbtnDelSystem_Click" OnClientClick="return confirmDelete(this.id); return false;" CommandArgument='<%# Eval("id") %>' runat="server">
<span class="btn btn-small btn-spinner">Delete</span>
</asp:LinkButton>
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
这是最后一行(链接按钮)让我很伤心 - 就像我说的,它在 Chrome 中完美运行,但它只是挂在 IE10 中(尽管我检查了控制台,我知道到目前为止,因为它显示 'trying').
有什么建议吗?
谢谢:)
如果您在 IE 中的按钮回发之前将其禁用,回发将不会发生。在回发启动后,您必须执行 settimeout
或其他操作来禁用该按钮。
示例:
function confirmDelete(id) {
try {
console.log('trying');
if (confirm('Do you really want to delete this entry?')) {
$('#' + id).html('Processing... <i class="fa fa-spinner fa-spin"></i>').addClass('disabled');
// new code here
setTimeout( function(){
$('#' + id).attr('disabled', 'disabled');
}, 0);
return true;
}
$('#' + id).html('<span class="btn btn-small btn-spinner">Delete</span>').removeClass('disabled').removeAttr('disabled');
} catch (e) { console.log(e.message);}
return false;
}
我对编码还是很陌生,我的 JavaScripting 几乎不存在。我试过寻找另一个答案,但我不确定我在寻找什么/在寻找什么,如果这是重复的,我深表歉意。无论如何...
我有一个 asp.net c# 页面,它可以将一系列数据从数据库中提取到 GridView 中。我想为页面用户提供的选项之一是能够删除行,作为其中的一部分,我在页面中包含了一些 JavaScript 以提示他们仔细检查是否要删除提前删除。我的问题是虽然脚本在 Chrome 中运行良好,但在 IE10 中不起作用(可能是因为 Chrome 更宽容)。谁能告诉我哪里可能出错了?
我的JavaScript函数是:
<script type="text/javascript">
function confirmDelete(id) {
try {
console.log('trying');
if (confirm('Do you really want to delete this entry?')) {
$('#' + id).html('Processing... <i class="fa fa-spinner fa-spin"></i>').attr('disabled', 'disabled').addClass('disabled');
return true;
}
$('#' + id).html('<span class="btn btn-small btn-spinner">Delete</span>').removeClass('disabled').removeAttr('disabled');
} catch (e) { console.log(e.message);}
return false;
}
</script>
并且它链接到以下 GridView:
<asp:UpdatePanel ID="upCurrentServicesGrid" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:GridView ID="grdviewCurrentSystems" CssClass="table-data" UseAccessibleHeader="true" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:BoundField DataField="systemName" HeaderText="System" ItemStyle-Width="10%"/>
<asp:TemplateField HeaderText="Status" ItemStyle-Width="46%">
<ItemTemplate>
<div style="display:none">
<asp:TextBox ID="RowId" runat="server" Text='<%# Eval("id") %>' />
</div>
<div style="display:none">
<asp:TextBox ID="SelectedVal" runat="server" Text='<%# Eval("systemStatus") %>' />
</div>
<pfp:DropDownList ID="pfpdropSystemStatus" CausesValidation="false" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Further information" ItemStyle-Width="50%">
<ItemTemplate>
<div>
<pfp:TextBox ID="pfptxtSystemStatusInfo" TextMode="MultiLine" MaxLength="300" CssClass="textarea1" runat="server" Text='<%# Eval("systemInformation") %>' />
</div>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Delete" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle">
<ItemTemplate>
<div>
<asp:LinkButton ID="lnkbtnDelSystem" CausesValidation="false" OnClick="lnkbtnDelSystem_Click" OnClientClick="return confirmDelete(this.id); return false;" CommandArgument='<%# Eval("id") %>' runat="server">
<span class="btn btn-small btn-spinner">Delete</span>
</asp:LinkButton>
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
这是最后一行(链接按钮)让我很伤心 - 就像我说的,它在 Chrome 中完美运行,但它只是挂在 IE10 中(尽管我检查了控制台,我知道到目前为止,因为它显示 'trying').
有什么建议吗?
谢谢:)
如果您在 IE 中的按钮回发之前将其禁用,回发将不会发生。在回发启动后,您必须执行 settimeout
或其他操作来禁用该按钮。
示例:
function confirmDelete(id) {
try {
console.log('trying');
if (confirm('Do you really want to delete this entry?')) {
$('#' + id).html('Processing... <i class="fa fa-spinner fa-spin"></i>').addClass('disabled');
// new code here
setTimeout( function(){
$('#' + id).attr('disabled', 'disabled');
}, 0);
return true;
}
$('#' + id).html('<span class="btn btn-small btn-spinner">Delete</span>').removeClass('disabled').removeAttr('disabled');
} catch (e) { console.log(e.message);}
return false;
}