问题背景:从数据库循环读取数据写在表格中,第十行填写金额,onblur时判断是否高出同行第二列,高出则报错,反之不报错。修改错误数据,信息会被擦除。
遇到的问题:第一行报错情况下,第二行填写正确信息也会擦除错误提示。
目的:只要存在错误就显示错误信息,修改错误(没有完全修改完)保留错误,完全修改完毕才能擦除错误
html代码
为了良好的抓取输入框值,使用动态添加id形式,在PHP中{$key}从0开始递增。this.id返回该输入框ID。
id="apply_{$key}" onblur="num_check(this.id)"
js代码
将错误ID存入数组,修改正确则删除数组对应元素。存在错误ID,则保留错误信息。错误数组没有信息时,才允许擦除信息。
1 var err_arr = new Array(); 2 function arr_check(id){ 3 for(var i=0;i<err_arr.length;i++){ 4 if(id==err_arr[i]){ 5 return true; 6 } 7 } 8 return false; 9 } 10 11 var numFlag = true; 12 function num_check(id) { 13 14 var money = $(‘#‘+id).val(); 15 var numMsg = $("#numMsg"); 16 var publish_amount =$(‘#‘+id).parent().parent().children(‘td:nth-child(2)‘).find(‘span‘).text(); 17 publish_amount = commafyback(publish_amount); //去除千分位 18 if (money == ‘‘) { 19 $(id).val(‘0‘); 20 } else if (money > publish_amount) { 21 22 if(!arr_check(id)){ 23 err_arr[err_arr.length]=id; 24 numMsg.text(‘数额不能超过发行金额‘); 25 } 26 numFlag = false; 27 } else { 28 29 if(arr_check(id)){ 30 err_arr.splice($.inArray(id,err_arr),1); 31 if(err_arr.length<1){ 32 numMsg.text(‘‘); 33 numFlag = true; 34 } 35 } 36 37 } 38 }
搞了半个小时,终于弄通了。jQuery不太会,一点一点查,惊喜还不少。
又一个原创文章,给自己赞一个~
这一定还不是最优方法,如果阅读这篇文章有兴趣的朋友可以和我讨论一下~还请赐教嘿嘿
(づ ̄3 ̄)づ╭?~
时间: 2024-11-06 03:25:14