我前台 定义了JS脚本 用来验证 日历控件(Calendar)输入的格式是否是日期型的 ,
<script>   
  function   checkDate()   
  {   
  var   obj=document.getElementById("Calendar1");  var   js=0; 
  var   temp=obj.value;   
  
  var   pattern=/^(\d{4})-(\d{2})-(\d{2})$/i   
  var   matches=temp.match(pattern);
 
  document.getElementById("Hid").value=js;   if(matches)   //匹配   DDDD-DD-DD   的形式   
  {   
  var   tempDate=new   Date(matches[1],matches[2]-1,matches[3]);   
  if(tempDate.getYear()!=matches[1]||tempDate.getMonth()!=(matches[2]-1)||tempDate.getDate()!=matches[3])   //检查是否正确日期   比如9923-15-48   等形式   
  {     
   js=1;
   document.getElementById("Hid").value=js;
  }   
  }  
  else   
  {       
  js=1;
 document.getElementById("Hid").value=js;
  }    
  }  
  </script> 两个日历控件
  <cc1:Calendar ID="Calendar1" runat="server" Width="299px" 
                    IsWrite="False"></cc1:Calendar>  <cc1:Calendar ID="Calendar2" runat="server" Width="299px" 
                    IsWrite="False"></cc1:Calendar>定义隐藏域来传递 js的值
 <asp:HiddenField ID="Hid1" runat="server" Value=""/>后台获取JS的值
int hd =int.Parse( Hid.Value);
请问我第二个日历控件 calendar2 也能像第一个一样传值到后台去,我试过复制JS但总是不能两个都传过去,只能传第一个日历控件的值,谁能提供两个值都传过去的解决办法?

解决方案 »

  1.   

    你复制过去把document.getElementById("Hid").value这句改掉,在页面再加个此控件
    你复制了,但是两个全都是更改的同一个hidden,当然只能得到一个了。
      

  2.   

    var  obj=document.getElementById("Calendar1"); 
    这个也要改。改成第二个日历控件的id
      

  3.   

    = 的话 每次都是最后赋的值 +=","  的话,可以用 split(',')  取得 string 数组 应该是个2维的split(',')[0] 是第一个  split(',')[1] 是第二个 
      

  4.   

    用一个隐藏域的话就像6楼那样用+= 然后用“,”或“|”之类的分开;
    用二个隐藏域就直接付给不同的value就行了
      

  5.   

    不对,我该有两个的都有两个,我把代码贴上来,大家帮我瞧瞧:
    这里是定义了2个JS 第一个是给calendar1用的 叫checkdate
    第二个给calendar2用叫checkdate2
     <script>   
      function   checkDate()   
      {   
      var   obj=document.getElementById("Calendar1");  var   js=0; 
      var   temp=obj.value;   
      
      var   pattern=/^(\d{4})-(\d{2})-(\d{2})$/i   
      var   matches=temp.match(pattern);
     
      document.getElementById("Hid").value=js;   if(matches)   //匹配   DDDD-DD-DD   的形式   
      {   
      var   tempDate=new   Date(matches[1],matches[2]-1,matches[3]);   
      if(tempDate.getYear()!=matches[1]||tempDate.getMonth()!=(matches[2]-1)||tempDate.getDate()!=matches[3])   //检查是否正确日期   比如9923-15-48   等形式   
      {     
       js=1;
       document.getElementById("Hid").value=js;
      }   
      }  
      else   
      {       
      js=1;
     document.getElementById("Hid").value=js;
      }    
      }  
      </script> 
       <script>   
      function   checkDate2()   
      {   
      var   obj2=document.getElementById("Calendar2");  var   js2=0; 
      var   temp2=obj2.value;   
      
      var   pattern=/^(\d{4})-(\d{2})-(\d{2})$/i   
      var   matches2=temp2.match(pattern);
     
      document.getElementById("Hid").value=js2;   if(matches2)   //匹配   DDDD-DD-DD   的形式   
      {   
      var   tempDate2=new   Date(matches2[1],matches2[2]-1,matches2[3]);   
      if(tempDate2.getYear()!=matches2[1]||tempDate2.getMonth()!=(matches2[2]-1)||tempDate2.getDate()!=matches2[3])   //检查是否正确日期   比如9923-15-48   等形式   
      {     
       js2=1;
       document.getElementById("Hid2").value=js2;
      }   
      }  
      else   
      {       
      js2=1;
     document.getElementById("Hid2").value=js2;
      }    
      }  
      </script> 这里定义了2个隐藏域控件
    <asp:HiddenField ID="Hid" runat="server" Value=""/>
    <asp:HiddenField ID="Hid2" runat="server" Value=""/>后台代码为
    int hd =int.Parse( Hid.Value);
    int hd2 =int.Parse( Hid2.Value);
    为什么hd 和hd2 我总是只能取到一个值啊 ?另一个为空值?
    谁再帮我看看啊?谢谢大家
      

  6.   

    看是否有必要用Ajax的结构,这样前台传后基本上不存在问题。
    可以用手工方式,也可以用安装ASPAJAXExt插件,方便易用。
      

  7.   

    没找到解决方案,我自己用 正则表达式判断的。 Regex   myreg=new Regex("^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$");   还是谢谢大家了。
      

  8.   


    你看看你第二个方法里面……document.getElementById("Hid").value=js2; 
    你明明就是往一个hid里放值。。改也要改彻底一点吧?