我有一个带有触发弹出窗口(单击时)的 div 的 asp.net 应用程序。如果我的代码隐藏代码中发生某些事情,我需要弹出窗口。
我想我可以将一个 javascript 代码块发送到我的页面以点击 div,但我似乎无法让它工作。这是弹出插件的 jQuery:
$(function () {
$('.c_popup').modalPopLite(
{ openButton: '#div_trigger',
closeButton: '#close-btn'
});
});
一个简单的 div 触发它(通过点击 div):
<div id="div_trigger">Trigger</div>
我可以通过页面上的按钮从 javascript 单击 div:
<input type="button" id="btn_show_error" value="Popup"
onclick="document.getElementById('div_trigger').click();" />
行得通。但是,当我尝试从我的代码后面将该 javascript block 准确地发送到页面时,如下所示:
ClientScript.RegisterStartupScript(Page.GetType(), "error_click",
"<script>document.getElementById('div_trigger').click();</script>")
没有任何反应。我通过更改为一个简单的警告框来测试我的代码:
ClientScript.RegisterStartupScript(Page.GetType(), "error_click",
"<script>alert('Hello World');</script>")
而且效果很好。所以我可以看到 javascript 从我后面的代码到达页面,当它来自页面本身上的按钮时,相同的 javascript block 执行我想要的操作,但它不起作用来自后面的代码。
如有任何想法,我们将不胜感激。我真的卡住了。
编辑:两个张贴者回应说我在弹出控件绑定(bind)之前发布我的 javascript。我不确定如何解决这个问题,即使我得到了帮助。我尝试在我的页眉 block 中创建此函数:
function TriggerDiv() {
$(document).ready(function () {
alert('success'); //alert just to check if the function is firing
document.getElementById('div_trigger').click();
});
}
然后像这样从我的代码后面调用它:
ClientScript.RegisterStartupScript(Page.GetType(), "error_click",
"<script>TriggerDiv();</script>")
警报触发,但点击事件没有 - 我在想我仍然没有按正确的顺序做事。任何进一步的帮助将不胜感激。
最佳答案
该元素在 javascript 执行时可能不存在,或者至少您对 modalPopLite
的调用尚未执行。将您的代码包装在 $(document).ready
中。
编辑:该元素在执行时应该存在。 RegisterStartupScript
将脚本添加到 body
的底部。但是,modalPopLite
调用尚未执行,因此点击处理程序尚未附加。 $(document).ready
应该仍然可以解决这个问题。
关于javascript - 从后面的代码触发 javascript;按钮触发 js 代码,RegisterStartupScript 不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18903954/