碰到一个问题,form页面中,想通过JS来控制重复提交,在使用 document.forms['form1'].submit();时, 360浏览器中可以执行到按钮的Save_Click方法,而在Google浏览器中,页面只产生了回发,但是没有执行到Save_Click方法
Html:
<!--Html-->
<a href="#" id="Save" runat="server" onclick="saveJudge(this)" onserverclick="Save_Click">
<i class="btn icon-save"></i> 保存
</a>
<!--JS-->
<script>
function saveJudge(obj){
//document.forms['form1'].__EVENTTARGET.value="Save"; //加上这句就可以了
obj.setAttribute('disabled', true);
obj.style.cssText += 'color:gray; pointer-events: none;';
document.forms['form1'].submit();
}
</script>
JS执行后页面产生了会回发,进入了Page_Load方法,证明submit()有效,只是没有定位到要执行的方法。查看页面源码发现有一段JS:
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
这段JS是自动生成了的,通过alert(document.forms['form1'].__EVENTTARGET.value); 发现__EVENTTARGET.value 是空的,
给document.forms['form1'].__EVENTTARGET.value="绑定了后端方法的控件的Id" ,当重新执行到Submit()方法时,服务器端就知道要执行的方法是Save的Save_Click方法。