我有一块连接到asp.net web窗体前端的jQuery(窗体的输入控件包装在标准的asp.net AJAX面板中),它有三个下拉列表它连接了一块jQuery的名单:从Jquery函数中忽略返回值
$(document).ready(function() {
jQuery("select").change(function() {
alert("Hi");
return false;
});
});
的下拉菜单有由ASP.NET连接服务器端更改事件,你会希望做回发:
<select name="ctl00$leftContent$cmbPressureUnitsPo" tabindex="6" class="unit" id="cmbPressureUnitsPo" onchange="javascript:setTimeout('__doPostBack(\'ctl00$leftContent$cmbPressureUnitsPo\',\'\')', 0)">
<option value="1">kPag</option>
<option value="1000">Pag (N/m²)</option>
<option selected="selected" value="0.001">MPag</option>
<option value="0.14504">PSIg</option>
<option value="10">mBarg</option>
<option value="0.01">Barg</option>
<option value="0.010197">kgf/cm²</option>
<option value="0.010197">atg</option>
<option value="0.0098692">atmg</option>
<option value="7.5001">torrg (mmHg)</option>
<option value="101.97">mmH₂O</option>
<option value="0.29528">inHg</option>
</select>
唯一的问题是返回false不会像我期望的那样压制服务器端事件!如果我实现了一个正常的JavaScript函数返回false,那么我错过了什么?
我也试过event.PreventDefault没有效果!
感谢杰克,你是非常正确的,它似乎setTimeout保证DOM实际上比任何其他方法加载更好似乎 - 本周通过包装代码解决了一些问题是零间隔计时器! – mmacneill123 2014-09-15 18:56:02
@ mmacneill123 - 是的 - 你是对的,它的确如此! (虽然我看到了Mobile Safari的一些怪癖,即使setTimeout也不保证DOM更改存在......奇怪的东西!)您是否能够解决您的问题? – Jack 2014-09-15 19:40:16
是的杰克,只是写在jQuery!从标记复制并粘贴生成的ASP.NET代码,设置Autopost = False,以便ASP.NET不再发出它,然后手动附加该事件。认为我越来越困惑正常的JavaScript处理程序和jQuery! – mmacneill123 2014-09-16 07:30:23