thinkphp在model中定义了自动验证之后,使用$this->display(模板)之后,之前页面输入的所有东西就没有了,请问在thinkphp中有什么方法可以让以前输入的东西还在,并且聚焦到错误的输入框内。thinkphp

解决方案 »

  1.   

    给你个思路如果你用的ajax,那当$create()表单验证失败时,用getError()方法获取错误信息,将之前验证时传过来的参数加上错误信息返回过去,ajax那里设置回调函数对信息进行处理。如果不是ajax的话,可以考虑在模板中使用session值作为错误信息,没有时写空字符串,验证失败时将错误信息写入对应session,返回后模板将进行显示,验证成功后注意清除对应session。聚焦的话如果多个填错你打算聚到哪个?
      

  2.   

    模板页面用jquery的Ajax方法提交到action,action中做判断,根据不同的错误返回不同的值,末班页面根据不同的返回值,输出不同的错误提示,且定位到指定的输入框。
      

  3.   

    刚才点错了,不好意思
    还想追问你一个问题,是thinkphp的ajax上传的问题,在百度上查是说,在页面上加一个iframe然后加几个input框,可是我照的网上说的加完之后,没有反应。后台可以接收到上传 的文件。还是继续使用ajaxReturn返回json数据。能不能贴一下源码
      

  4.   


    $.post("{:U('index/index/check')}", {name:name}, function(result){
    if(result == -1){
    alert('输入名字不存在');
    return false;

    }else if(result == -2){
    alert('输入名字不合法');
    return false;
    }
    }); index/indexAction.class.php
    function check(){
        $name=$_POST['name'];
        $map['name']=$name;
        $result=M('user')->where($map)->find();
        if($result){
          echo -1;exit;
         }
         if(!isAble($name)){
          echo -2;exit;
         }
    }
      

  5.   

    上面的第一个alert应该说是已经存在
      

  6.   

    可以贴出你的代码,让我们look一下
      

  7.   

    <form method="post" action="__URL__/uploadVideo" enctype="multipart/form-data" id="upload" target="ajaxUpload">
    <input type="hidden" name="ajax"/>
    <input type="file" name="newico"/>
    <input type="submit" name="submit" value="submit"/>
    </form>
    <iframe name="ajaxUpload" src="" frameborder="0" SCROLLING="no" style="display:none" id="ajaxUpload">
    <input type="hidden" name="_AJAX_SUBMIT_" value="1"/>
    <input type="hidden" name="_uploadFormId" value="upload"/>
    <input type="hidden" name="_uploadFileResult" value="result"/>
    <input type="hidden" name="_uploadResponse" value="uploadComplete"/>
    <input type="hidden" name="_uploadReplace" value="1"/> 
    <input type="hidden" name="_uploadFileType" value="jpg,gif,png,swf" /> 
    <input type="hidden" name="_uploadSavePath" value="/Public/Images/user/"/> 
    <input type="hidden" name="_uploadSaveRule" value="time"/> 
    <input type="hidden" name="_uploadFileSize" value="20480"/>
    </iframe>public function uploadVideo(){
    //dump($_POST);
    $info = $this->upload('temp');
    }

    public function upload($module = '', $path = '', $thumb = '', $width = '', $height = '') {
      $module = $module = ""?'temp':$module;
      switch ($module){
       case 'temp':$path = C(ATTACHDIR) . '/temp/' . $path;
    break;
       case 'storehouse':$path = C(ATTACHDIR) . '/storehouse/' . $path;
    break;
       case 'shop':$path = C(ATTACHDIR) . '/shop/' . $path;
    break;
       case 'trader': $path = C(ATTACHDIR) . '/trader/' . $path;
    break;
       case 'group': $path = C(ATTACHDIR) . '/group/' . $path;
    break;
       case 'my': $path = C(ATTACHDIR) . '/avatar/' . $path;
    break;
       default:$path = C(ATTACHDIR) . '/file/' . $path;
      }
     
      if (!is_dir($path)) @mkdir($path);
      import("ORG.Net.UploadFile");
     
      $upload = new UploadFile();
      $upload->maxSize = C(ATTACHSIZE);
      $upload->allowExts = explode(',', strtolower(C(ATTACHEXT)));
      $upload->savePath = $path;
      $upload->saveRule = 'uniqid';
      //$upload->allowTypes=array('jpg');
      //empty($thumb)?$upload->thumb = C(ATTACH):$upload->thumb = $thumb;
      //empty($width)?$upload->thumbMaxWidth = C(THUMBMAXWIDTH):$upload->thumbMaxWidth = $width;
      //empty($height)?$upload->thumbMaxHeight = C(THUMBMAXHEIGHT):$upload->thumbMaxHeight = $height;   if (!$upload->upload()){
       if($this->isAjax()){
    $this->ajaxReturn(array("errorMsg"=>$upload->getErrorMsg()),'uploadError',2);   
       }else{
       return $this->error($upload->getErrorMsg());
       }
      }else{
       if($this->isAjax()){
        $this->ajaxReturn(array('info' => 'info'),'info',1);
       }else{
       return $upload->getUploadFileInfo();
       }
      }
     }
      

  8.   

    问题已经解决。做一个static方法就可以了。结贴