function subforminfo()
  {
  if( checkOldPass( $('#old_password').val() ) )
  {
     return false;
  }
  }
function checkOldPass( oldpassword ,dduserid)
  {
     if( oldpassword == '' )
 {
    showMessage( 'oldpassword' , false , '密码不能为空' );
    return false;
 }
 if( oldpassword.length < 6 || oldpassword.length>12 )
 {
    showMessage( 'oldpassword' , false , '密码必须是6-12位' );
    return false;     
 }
  $.post('?mod=ajax&act=check_oldpass',{oldpass:oldpassword,dduserid:dduserid},function ( data ){
 if( data =='true')
 {
showMessage( 'oldpassword' , true , '密码正确' ); 
return true;
 }
 else
 {
showMessage( 'oldpassword' , false , '密码错误' );
    return false;
 }
});  
  return true;
  }<form id="infoset" name="form1" action="<?=u('user','info',array('do'=>'myinfo'))?>" method="post" style=" padding-left:50px" onsubmit="return subforminfo()">
    <table border="0" align="left" cellpadding="0" cellspacing="0" class="no_table">
<tr>
  <td width="21%" height="35" style="text-align:right;font-size:14px">原密码 *&nbsp;&nbsp;&nbsp;</td>
  <td width="30%"><input name="old_password" type="password" id="old_password" class="info_input" onblur="checkOldPass( this.value,<?=$dduser['id']?>);"/></td>
  <td class="form_mag1"><span id="oldpasswordmsg"></span></td>
</tr>
<tr>
  <td height="35">&nbsp;</td>
  <td><input type="hidden" name="sub" value="1" />
  <div class="img-button "><p><input type="submit" value="保存信息" /></p></div></td>
  <td></td>
</tr>
  </table>
      </form>
输入框onblur的时候会验证密码是否正确,工作正常
但点击提交按钮,得到的结果跟onblur就不一样。明明是正确的密码。却提示错误

解决方案 »

  1.   

    Server中返回的data 是?  alert出来看一下
      

  2.   


    密码正确返回TRUE,否则是FALSE我用ALERT试了下,输入一个错误密码~onblur提示FALSE,submit就提示TRUE了~~
      

  3.   


    function subforminfo()
      {
          if( checkOldPass( $('#old_password').val() ) )
          {
             return false;
          }
      }//修改为:
    //是不是应该加 反  !false ==truefunction subforminfo()
      {
          if( !checkOldPass( $('#old_password').val() ) )
          {
             return false;
          }
      }
      

  4.   


    我感觉你的逻辑是不是不清晰啊。  很简单的首先对输入字符进行客户端判断。true后进行Server端判断。2者分开。也就是要细化这个问题:这个到底在什么地方出现错误:Server端还是客户端。你目前贴出的js判空和判长度是没有问题的。所以我觉得应该是Server端返回结果的问题
      

  5.   


    问题找到了~~~~是SERVER方面的~~验证需要oldpass,dduserid两个参数~~~谢了