JS如何实现不符合要求重新填写的?

我现在想做一个修改用户名的功能,用户选中用户名的单元格,进行修改,修改完后马上要检测,检测数据库中有没有重复的,如果有重复的,则弹出“用户名重复”,然后编辑后单元格再次获取到焦点,编辑过的单元格恢复到原来未编辑的值,怎么弄?

需要在这个单元格的“编辑结束”里写事件,来实现,谢谢

FineReport nhb2318 发布于 2018-12-13 11:44
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
nhb2318Lv4初级互助
发布于2018-12-13 16:50(编辑于 2018-12-13 16:52)

编辑前事件:

 window.celllastvalue=this.getValue();

编辑后事件: 

 var thisnamepy=this.getValue();//填写的用户py

  var lastnamepy=window.celllastvalue

  if(thisnamepy!=lastnamepy){//用户修改为别的用户时要检查重复

    var sql="select count(namepy) from 用户信息 where namepy='"+thisnamepy+"'";

    var namecount=FR.remoteEvaluate('=SQL("data","'+sql+'",1)'); 

    if(namecount>0){

contentPane.setCellValue(col-1,row-1,lastnamepy); 

      alert("系统中已经有重复的用户名了");

      //用户名撤销,选择用户名

      return false;

    } 

  }

这样就可以实现了,我用到了return false,很关键

但是这样的效果不太好,比如:我执行了return false后,焦点会停留在刚编辑过的单元格,不符合规定的值也会恢复成未编辑前的值,但是恢复后的值无法处于选中,不直观。

我试图加上这句代码,但无效果:

      var cell = contentPane.curLGP.currentTDCell;      

 setTimeout(function(){

contentPane.curLGP.selectTDCell(cell);

contentPane.curLGP.editTDCell(cell);   

 },20)

恢复值后还是不能处于选中状态。请指教!

我在想如何JS能模拟鼠标双击一下这个单元格的话,就处于选中状态了,可是我不知道模拟鼠标双击的代码如何写?


最佳回答
0
flyingsnakeLv6资深互助
发布于2018-12-13 11:47

使用js进行及时校验-http://help.finereport.com/doc-view-560.html

最佳回答
0
孤陌Lv6资深互助
发布于2018-12-13 11:52(编辑于 2018-12-13 13:25)

//获取填报控件的值

var name = this.getValue();

//判断填报内容在数据库中是否存在

var sql ="SQL(\"FRDemo\",\"SELECT 销售员 FROM 销量 where 销售员='"+name+"'\",1,1)";

var len = FR.remoteEvaluate(sql).length;

if(len == 0)

{

FR.Msg.alert(FR.i18n.Alert,"该销售员不存在,请重新输入。");

this.setValue("");

}


blob.png


  • nhb2318 nhb2318(提问者) 好像不行,我这个name单元格是扩展的 然后怎么获取焦点,恢复到编辑前的值呢?
    2018-12-13 11:54 
  • 孤陌 孤陌 回复 nhb2318(提问者) 我已经改了 自己重新看
    2018-12-13 11:57 
  • nhb2318 nhb2318(提问者) this.getValue()可以呀,我的就是这样啊 问题是不知道检测出重复后如何恢复原来的值? 原来的值可不一定是空值哦
    2018-12-13 12:00 
  • 孤陌 孤陌 回复 nhb2318(提问者) 判断条件修改一下我判断的是不存在 清空 你修改成不等于0 就好了
    2018-12-13 12:01 
  • 孤陌 孤陌 回复 nhb2318(提问者) 那你 在JS 里的自定义参数里 定义 个参数 然后用公式 等于你单元格
    2018-12-13 12:03 
  • 2关注人数
  • 434浏览人数
  • 最后回答于:2018-12-13 16:52
    请选择关闭问题的原因
    确定 取消
    返回顶部