我正在准备文档上加载一个函数。这一切都有效。必须刷新页面才能再次使用。
$(document).ready(function () {
function resetChosen() {
$('.chosen').val(' ').trigger('chosen:updated');
alert('how many times will this work?');
}
$('#submitter').on('click', function (clickEvent) {
setTimeout(resetChosen, 500);
})
})
我基本上是在等待500ms之后尝试使用类.chosen重置表单字段。警报用于调试。
它有效但只有一次。为什么呢?
谢谢!
更新:更多详情
我查看了HTML,此按钮位于UpdatePanel ...
<form id ="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" EnablePageMethods="true" />
<asp:Timer ID="Timer1" runat="server" Interval="10000" OnTick="Timer1_Click" Enabled="true" />
<div class="col-10 topRow">
<div class="dispatchContainer">
<div class="col-1">
<div class="dispatchBtnBox" style="display: block">
<asp:UpdatePanel ID="UpdatePanel100" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="True">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="submitter" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:Button runat="server" ID="submitter" class="submitter" Text="Notify" OnClick="submitter_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</div>
</div>
...可能是为了防止页面在点击时刷新。这个功能是否需要添加到页面请求管理器?
我已经为我的问题更新了标签。
谢谢!
更新2:解决方案:
我在Click事件后面的代码上注册了一个带有ScriptManager控件的scriptblock。
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "submitterReset", "submitterReset", false);
谢谢!
答案 0 :(得分:0)
如果需要,可以删除大量UpdatePanel标记。一些设置是默认设置,因此您不需要它们。如果您希望在页面上看到它们没问题,只需保留它们,但您可以删除很多内容,甚至是触发器 - 更新面板中任何导致回发的内容都会自动触发。
默认值:UpdateMode =“有条件”; ChildrenAsTriggers = “真”。
<asp:UpdatePanel ID="UpdatePanel100" runat="server">
<ContentTemplate>
<asp:Button runat="server" ID="submitter" class="submitter"
Text="Notify" OnClick="submitter_Click" />
</ContentTemplate>
</asp:UpdatePanel>
[一次删除一个并测试,只是为了确定。]
答案 1 :(得分:0)
Settimeout运行代码一次。 Setinterval就是这项工作。我已经为您重新编写了代码。试试看,看看是否有帮助。
$(document).ready(function () {
function resetChosen() {
$('.chosen').val(' ').trigger('chosen:updated');
alert('how many times will this work?');
}
$('img').on('click', function (clickEvent) {`enter code here`
setInterval(function () {
resetChosen()
}, 500);
})
})
答案 2 :(得分:0)
我查看了这个标记,发现我的控件是在一个asp UpdatePanel中。在我的_Click下使用ScriptManager注册脚本修复了问题。