mark下工作中JS的小问题

如图:

单选框是6天,文本框最多是1-15的正整数,而且单选框的值要和文本框对应,当文本框大于等于7时,单选框的check都为false;

而编辑器是根据天数来生成的,譬如选5天,就生成5个编辑器,代码如下:

 1 //根据天数实例化UEditor
 2 function getDaysDetail(num){
 3     for(var i=1;i<=num;i++)
 4     {
 5         var editor = new UE.ui.Editor();
 6         UE.getEditor('tuan_schedule_'+i, {
 7             maxImageSideLength:477 //宽度超过477px将自动等比缩至宽477px
 8              ,imagePath:"" 
 9         });
10     }   
11 }

调用getDaysDetail()代码如下:

 1 var daysRadio=$('#selectDays').find('input[name="schedule_day"]:radio');
 2 var daysTxt=$('#selectDays').find('input[name="schedule_day_other"]');
 3 var days=$('#selectDays').find('input[name="schedule_day"]:radio:checked').val()
 4 
 5 //判断函数是否存在
 6 if(typeof getDaysDetail==undefined) return;
 7 
 8 daysTxt.val(days);
 9 getDaysDetail(days);
10 
11 daysRadio.click(function(){
12     days=$('#selectDays').find('input[name="schedule_day"]:radio:checked').val();
13     getDaysDetail(days);
14     daysTxt.val(days);
15 });
16 
17 daysTxt.mouseenter(function(){
18     $(this).focus();
19     $(this).select();
20 })
21 
22 //判断是否为正整数 1~15
23 function isUnsignedInteger(a)
24 {
25     var reg =/^[1-9][0-5]?$/;
26     return reg.test(a);
27 }
28 
29 daysTxt.keyup(function()
30 {
31     days=parseInt($(this).val());
32     if(isUnsignedInteger(days)){
33         if(days>=1 && days<=15)
34         {
35             
36             if(days>=1 && days<=6)
37             {
38                 $('#selectDays').find('input[name="schedule_day"]:radio[value='+days+']').attr('checked',true);
39             }
40             else
41             {
42                 daysRadio.each(function(i){
43                     $(this).attr('checked', false);
44                 })
45             }
46             getDaysDetail(days);
47         }
48         else
49         {
50             daysTxt.val(1);
51             $('#selectDays').find('input[name="schedule_day"]:radio[value=1]').attr('checked',true);
52             return false
53         }
54     } 
55     else
56     {
57         daysTxt.val(1);
58         $('#selectDays').find('input[name="schedule_day"]:radio[value=1]').attr('checked',true);
59         return false
60     }
61 }); 

前段时间跑没什么问题,后来同事反映说当>=7时,无法调用getDaysDetail() 这个函数;用了几分钟check下代码,发现第3行代码出的问题:

var days=$('#selectDays').find('input[name="schedule_day"]:radio:checked').val()

days只算了radio的值;

而第9行getDaysDetail(days)  是只算的radio的值,没有传input=text的值,这样当然>=7时,就不能调用getDaysDetail() 函数了;

只需小改一下:

 

var days=$('#selectDays').find('input[name="schedule_day"]:radio:checked').val()||daysTxt.val();

 

就OK了。

看来工作中还是有些边缘问题没考虑到,mark于此,以后谨记于心。

 

posted @ 2013-06-28 19:34  wuwo  阅读(218)  评论(0编辑  收藏  举报