<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title></title>
<link href="images/css.css" rel="stylesheet" />
<script language="javascript"> 
function change(_this){
  var divInput= _this.form.getElementsByTagName("div")[0]
  if(_this.value==''){ 
  alert('请选择房源状态');
  } 
  if(_this.value=='预定'){ 
  divInput.style.display='block'; 
  } 
  else { 
      divInput.style.display='none'; 
  } 

</script> 
<script>
      function submit(obj){
          var sel=obj.form.getElementsByTagName("select")[0];
          var value=sel.options[sel.selectedIndex].value; 
          var divInput= _this.form.getElementsByTagName("div")[0];
          if(value==''){
           alert('请选择房源状态');
       return;
          }
  divInput.style.display='none';
  document.forms[0].submit();
 }
  </script>
</head>
<body>

                      <form name="roomForm" method="post" action="/landi/room.do">
                      <input type="hidden" name="method" value="doStateEdit">
                      <input type="hidden" name="id" value="20">
           
               <tr align="center" class="white">
            <td class="row">G1409</td>
            <td class="row">一室一卫(单间)</td>
            <td class="row">44.0</td>
            <td class="row">办公</td>
            <td class="row">2009-05-14 16:05:02</td>
            <td class="row"><select name="rom.state" id="rom.state" onchange="change(this)">
                     <option value="">---</option>
                      <option value="空闲" class="green">空闲</option>
                     <option value="入住" class="red">入住</option>
                     <option value="长租" class="blue">长租</option>
                     <option value="预定" class="purple">预定</option>
                      <option value="办公" class="white">办公</option>
                     <option value="故障" class="grey">故障</option>
                   </select>&nbsp;&nbsp;&nbsp;
   <button class="button" onClick="javascript:submit(this);">提交</button> 
           </td>
          </tr>        
           <div id="Layer" style="display:none">
  <p>&nbsp;</p>
  <p>从当前日期开始预订到
    <input type="text" id="destine_edntime" name="destine_edntime"  style="width:110px" />
    (YYYY-MM-DD)</p> <p>&nbsp;</p>
</div>
           </form>
                      <form name="roomForm" method="post" action="/landi/room.do">
                      <input type="hidden" name="method" value="doStateEdit">
                      <input type="hidden" name="id" value="22">
               <tr align="center" class="white">
            <td class="row">G1415</td>
            <td class="row">一室一卫一厅(单套间)</td>
            <td class="row">72.0</td>
            <td class="row">办公</td>
            <td class="row">2009-04-16 13:30:39</td>
            <td class="row"><select name="rom.state" id="rom.state" onchange="change(this)">
                     <option value="">---</option>
                      <option value="空闲" class="green">空闲</option>
                     <option value="入住" class="red">入住</option>
                     <option value="长租" class="blue">长租</option>
                     <option value="预定" class="purple">预定</option>
                      <option value="办公" class="white">办公</option>
                     <option value="故障" class="grey">故障</option>
                   </select>&nbsp;&nbsp;&nbsp;
   <button class="button" onClick="javascript:submit(this);">提交</button> 
           </td>
          </tr>
           <div id="Layer" style="display:none">
  <p>&nbsp;</p>
  <p>从当前日期开始预订到
    <input type="text" id="destine_edntime" name="destine_edntime"  style="width:110px" />
    (YYYY-MM-DD)</p> <p>&nbsp;</p>
</div>
           </form></body>
</html>为什么提交事件
function submit(obj){
          var sel=obj.form.getElementsByTagName("select")[0];
          var value=sel.options[sel.selectedIndex].value; 
          var divInput= _this.form.getElementsByTagName("div")[0];
          if(value==''){
           alert('请选择房源状态');
       return;
          }

  divInput.style.display='none';
  document.forms[0].submit();
 }
中,为什么红色字体部分的代码不能够执行呢?而绿色字体部分的代码却可以执行呢?
一开始红色字体部分是这样写的 var sel=document.getElementById("rom.state"); 
       var value=sel.options[sel.selectedIndex].value;       
       if(value==''){
       alert('请选择房源状态');
       return;
       }
在静态页面上测试是正常的,但是放在上面的jsp页面里就不能执行了。

解决方案 »

  1.   

    个人觉得:
    并不是红色字体没执行,而只是没执行if中的语句,可能是你的这个value!="";
    而你下面的绿色字体部分在if之外所以被执行了。
      

  2.   

    但我这样写
    function submit(obj){
              alert("第一步");
              var sel=obj.form.getElementsByTagName("select")[0];
              alert("第二部");
              var value=sel.options[sel.selectedIndex].value; 
              alert("第二部");
              var divInput= _this.form.getElementsByTagName("div")[0];
              alert("第二部");
              if(value==''){
               alert('请选择房源状态');
           return;
              }
      divInput.style.display='none';
      document.forms[0].submit();
     }
    测试了下,没有一个alert();打印出来的
      

  3.   

    <button class="button" onClick="javascript:submit(this);">提交 </button> 
    改成:
    <input type="button" value="提交" onClick="javascript:submit(this);">试试!因为我不知道你用的什么语言的,可我确实从没见过你上面这种提交方式的。
      

  4.   

    刚才试了下,真有<button></button>这种形式的。呵呵。
    是我见识短浅了!不要见怪。
      

  5.   

    <button class="button" onClick="javascript:submit(this);">提交 </button> 在这个地方是不能用submit(this)方法的。如果这样用,意思是,提交当前表单。而不会去执行你定义的 function submit(obj){……}方法了。
    所以把 function submit(obj)改成如function sub(obj)或其它的都可以,不要写成js中的关键字。这样就没问题啦另外还有个问题var divInput= _this.form.getElementsByTagName("div")[0]; 
    这里的'_this'应该是'obj'吧
      

  6.   

    你哪红色字体中
    obj.form.getElementsByTagName("select")[0]; 
    这是ie写法,
    其他浏览器不认识