[問題] 請問插入多筆紀錄的表單欄位檢查

看板Ajax作者 (中仔)時間17年前 (2008/09/18 14:24), 編輯推噓0(0010)
留言10則, 2人參與, 最新討論串1/2 (看更多)
請教各位高手.目前小弟在做網頁系統,有個表單是需要上傳銷售資料的 而表單也有作欄位檢查,頁面圖如下 http://140.124.90.41/up/a/example.jpg
目前客戶有需求想要一次新增多筆紀錄,這部份我用迴圈作是可以插入多筆紀錄, 而利用URL變數來新增多筆表單欄位 <?php for( $i=0; $i<$Num; $i++){ ?> <select name="p_type[]" id="p_type[]"> <option selected>-Select-</option> <option value="POSM">POSM</option> <option value="Product on Shelf">Product on Shelf</option> <option value="Activity">Activity</option> <option value="Promotion">Promotion</option> </select>  <br> <input type="file" name="f_name[]" id="f_name[]" size="50" > <input type="text" name="note[]" id="note[]">note <br> <?php } ?> <a href="week_up.php?Num=<?php echo ++$Num;?>"> <font color=red>Add New Records</font></a> 只是問題只有新增一筆資料時欄位檢察是可以運作的,當week_up.php?Num=2 以上也就是兩筆以上的表單時,JS的檢查欄位就失效了? 該頁原始檔php如下 http://140.124.90.41/up/a/weekup.rar JS Function,這表單欄位是用DW的MXP去做的.感覺很複雜..其實好像用簡單的if~else在 alert('information')的JS就可以了... function YY_checkform() { //v4.65 //copyright (c)1998,2002 Yaromat.com var args = YY_checkform.arguments; var myDot=true; var myV=''; var myErr='';var addErr=false;var myReq; for (var i=1; i<args.length;i=i+4){ if (args[i+1].charAt(0)=='#'){myReq=true; args[i+1]=args[i+1].substring(1);}else{myReq=false} var myObj = MM_findObj(args[i].replace(/\[\d+\]/ig,"")); myV=myObj.value; if (myObj.type=='text'||myObj.type=='password'||myObj.type=='hidden'){ if (myReq&&myObj.value.length==0){addErr=true} if ((myV.length>0)&&(args[i+2]==1)){ //fromto var myMa=args[i+1].split('_');if(isNaN(parseInt(myV))||myV<myMa[0]/1||myV > myMa[1]/1){addErr=true} } else if ((myV.length>0)&&(args[i+2]==2)){ var rx=new RegExp("^[\\w\.=-]+@[\\w\\.-]+\\.[a-z]{2,4}$");if(!rx.test(myV))addErr=true; } else if ((myV.length>0)&&(args[i+2]==3)){ // date var myMa=args[i+1].split("#"); var myAt=myV.match(myMa[0]); if(myAt){ var myD=(myAt[myMa[1]])?myAt[myMa[1]]:1; var myM=myAt[myMa[2]]-1; var myY=myAt[myMa[3]]; var myDate=new Date(myY,myM,myD); if(myDate.getFullYear()!=myY||myDate.getDate()!=myD||myDate.getMonth()!=myM){addErr=true}; }else{addErr=true} } else if ((myV.length>0)&&(args[i+2]==4)){ // time var myMa=args[i+1].split("#"); var myAt=myV.match(myMa[0]);if(!myAt){addErr=true} } else if (myV.length>0&&args[i+2]==5){ // check this 2 var myObj1 = MM_findObj(args[i+1].replace(/\[\d+\]/ig,"")); if(myObj1.length)myObj1=myObj1[args[i+1].replace(/(.*\[)|(\].*)/ig,"")]; if(!myObj1.checked){addErr=true} } else if (myV.length>0&&args[i+2]==6){ // the same var myObj1 = MM_findObj(args[i+1]); if(myV!=myObj1.value){addErr=true} } } else if (!myObj.type&&myObj.length>0&&myObj[0].type=='radio'){ var myTest = args[i].match(/(.*)\[(\d+)\].*/i); var myObj1=(myObj.length>1)?myObj[myTest[2]]:myObj; if (args[i+2]==1&&myObj1&&myObj1.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true} if (args[i+2]==2){ var myDot=false; for(var j=0;j<myObj.length;j++){myDot=myDot||myObj[j].checked} if(!myDot){myErr+='* ' +args[i+3]+'\n'} } } else if (myObj.type=='checkbox'){ if(args[i+2]==1&&myObj.checked==false){addErr=true} if(args[i+2]==2&&myObj.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true} } else if (myObj.type=='select-one'||myObj.type=='select-multiple'){ if(args[i+2]==1&&myObj.selectedIndex/1==0){addErr=true} }else if (myObj.type=='textarea'){ if(myV.length<args[i+1]){addErr=true} } if (addErr){myErr+='* '+args[i+3]+'\n'; addErr=false} } if (myErr!=''){alert('The required information is incomplete or contains errors:\t\t\t\t\t\n\n'+myErr)} document.MM_returnValue = (myErr==''); } //--> 是我表單元素名稱寫錯了嗎?可是我記得要用陣列型式才能插入多筆記錄 可能請教這樣的部分JS應該要怎麼實作才能檢查欄位? 煩請高手抽空指點.感激不盡! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.218.94

09/18 14:27, , 1F
啊你又沒貼檢查欄位的code 誰看得出來為什麼失效啊=.=
09/18 14:27, 1F

09/18 14:27, , 2F
js是每一個元素每一個元素去考慮的 , 不是隨便加加就可擴充.
09/18 14:27, 2F

09/18 14:34, , 3F
不好意思~我修改一下@@a~剛剛才再看code
09/18 14:34, 3F

09/18 14:36, , 4F
最好是貼會出錯那頁的網址 , 這樣比較好幫忙看.
09/18 14:36, 4F
※ 編輯: chrismaggie 來自: 220.132.218.94 (09/18 14:42)

09/18 14:50, , 5F
晚上下班如果還沒解決再幫你看看...:p
09/18 14:50, 5F

09/18 14:55, , 6F
謝謝T大!我會繼續想看看
09/18 14:55, 6F

09/19 01:18, , 7F
太亂了 =.=a 看到一半就不想繼續看下去了...
09/19 01:18, 7F

09/19 11:18, , 8F
那個CHRCK FORM..我都不知道怎麼改..還是算了..
09/19 11:18, 8F

09/19 11:18, , 9F
真的看到會花掉...
09/19 11:18, 9F

09/19 11:33, , 10F
T大~我後來把它改掉.用自己寫的JS判斷...我回文一下
09/19 11:33, 10F
文章代碼(AID): #18qVGqID (Ajax)
文章代碼(AID): #18qVGqID (Ajax)