我在做一个填写表单的页面,里面有些字段是必填的,有些是非必填的,页面有两个按钮,一个提交,一个保存,点击保存的时候页面的数据在数据库中表示草稿状态,点击按钮时都会先触发检验事件,然后再触发后台的_Click事件,从而把数据保存到数据库中。我要实现的功能是点击保存的时候不检验页面的所有必填字段是否已经填写了(就是必填项为空也可以保存,但是点提交的时候就不行),点击提交的时候就检验,我的表单中用的是一个checkform.js文件来实现检验功能。前台页面代码大体如下:
……
<script type="text/javascript" src="/Manager/js/checkform.js"></script>
<form id="form1" runat="server"  onsubmit="javascript:return checkForm(this)">
……
<asp:Button ID="保存" runat="server"  OnClick="保存_Click" Text="保存" />
<asp:Button ID="提交" runat="server"  OnClick="提交_Click" Text="提交" />
……
</form>
我现在遇到的问题是点击保存的时候也触发了检验事件,因为checkform.js里面的checkForm(fm)这个函数太多内容了,不想把它单独绑定到提交按钮。我想能不能在checkform.js中获取被点击按钮的ID,比如点击的是ID“保存”的按钮就不执行checkForm(fm)这个函数了,请高手多多帮忙啊,小弟结贴率百分百的!

解决方案 »

  1.   

    可以的因为你的checkform传进了整个form对象,那是可以拿到在这个form范围内的所有控件的。你说的ID方法是可行的,在检验函数里边,监听你希望点击不提交的按钮,可以这样写。还有建议一下ID命名最好多使用英文
    document.getElementById("save_btn").onclick=function(){return false}
      

  2.   

    去掉onsubmit="javascript:return checkForm(this)">
    form 的submit 和check放在两个button的click事件中,其中保存_Click中不进行相关的check,然后提交form。
    提交_Click中进行相关的check,然后提交form就是了。按你的思路,要获取id可以这样:  var eve = window.event || evnt;
      var obj = eve.srcElement||eve.target;
      if (obj.id == "保存"){
      } else if (obj.id =="提交") {
      }
      

  3.   

    用下面方法获得id,如果是不要的id,就不提交<script language="javascript">
        document.onclick=function(){
            var child=null;
            if(window.event){
                e=window.event;
                child=document.activeElement
            }else{
                child=arguments[0].explicitOriginalTarget;
            }
                //这里写if(id==used) 就做你要做的,else return false
            document.getElementById('show').innerHTML="焦点的DOM为"+child.id;
        }</script> 
    <input   ID="Text1" NAME="Text1"/> <button id="nouse" >不提交的按钮 </button> <button id="used" >提交的按钮 </button>
    <div id=show></div>