今天修改代码的时候,发现了一个历史问题:在客户信息应用的界面里,由于字段过多,当时采用了tab窗口的方式进行,以方便客户进行编辑,但是tab其中的A窗口中,有一个备注文本框,发现在列表的时候能够显示出备注内容,但是点击编辑的时候,却无论如何都不能显示值,百思不得其解。
目录
原有代码
非常简单的代码,而且问题只能出现在js中,涉及到的代码如下:
html代码:
<div class="form-group">
<label class="myControlLabel col-md-3" for="txtRemark"> 备注:</label>
<div class="myControls col-md-9">
<textarea id="txtRemark" name="txtRemark" rows="3" class="form-control myInput"></textarea>
</div>
</div>
列表代码:
{ field: 'Remark', title: '备注', sortable: false, align: 'left' }
编辑界面代码:
$('#txtRemark').val(Remark);
破案过程
通过alert跟踪,Remark的值,的确也从数据库取到了,毕竟在列表里是有的(可以有多条记录),但是就是在编辑界面出不来。
曾经怀疑是浏览器的原因,结果用各种浏览器测试,都是不显示。
不料偶然点开tab另外B窗口,拉到最下面,忽然发现界面上也有一个备注字段,其中的内容与A窗口的Remark的内容是一致的!一开始还不相信,毕竟这是两个js文件,按理说不应该有冲突的。
经过果断修改字段名(个人最喜欢排除法),果然问题出在这里!把A窗口的Remark改成RemarkRun,问题解决!
案件分析
回头再进行分析,犯了以下几个惯性思维的错误:
- 认为两个js文件,字段名重复不会有冲突;
- 认为A里面是列表,B界面是form,互相没有干扰;
- 数据库设计的时候,为了命名统一,把备注字段统一命名为Remark;
如果不是偶然点开B界面,估计今天的两三个小时又白费了,好在心态还不错,一直在思考,没有放弃,写出来供自己今后反思和提醒吧。