いつもお世話になっております。今回<table>の中でチェックボックスを使い、チェックボックス
にチェックが入っているものだけを登録するようなプログラムを作っています。
現状、チェックが入っているものはクエリーでFLG=onと渡せるのですが、チェックを外した場合は
FLG自体渡せない状況です。何か他の方法があるのでしょうか?初歩的な質問ですがよろしくお願い致します。
lang
1<input type='checkbox' name='FLG' checked='checked' />
渡すプログラムとしてはフォーム要素からクエリ文字列を生成し、RPG側へと渡しています。
RPGの該当箇所だけ抜粋するとここで判断しているようです。
lang
1EVAL G@SKFLG = #FV(FV:'FLG':W@I) 2 3IF G@SKFLG = *BLANK 4ITER 5EDNIF
lang
1this.buildForm = function(form, isEncoding) { 2 if (!isEncoding) { isEncoding = true; } 3 4 for (var i = 0; i < form.elements.length; i++) { 5 var elem = form.elements[i]; 6 if (elem.tagName == "INPUT") { 7 if (elem.type == "checkbox" && elem.checked && !elem.disabled) { 8 //this.queries[elem.name] = elem.value; 9 this.addParam(elem.name, elem.value); 10 } else if (elem.type == "radio" && elem.checked && !elem.disabled) { 11 //this.queries[elem.name] = elem.value; 12 this.addParam(elem.name, elem.value); 13 } else if (elem.type == "text" && !elem.disabled && !elem.readonly) { 14 //this.queries[elem.name] = elem.value; 15 this.addParam(elem.name, elem.value); 16 } else if (elem.type == "password" && !elem.disabled && !elem.readonly) { 17 //this.queries[elem.name] = elem.value; 18 this.addParam(elem.name, elem.value); 19 } else if (elem.type == "hidden" && !elem.disabled && !elem.readonly) { 20 //this.queries[elem.name] = elem.value; 21 this.addParam(elem.name, elem.value); 22 } 23 } else if (elem.tagName == "SELECT") { 24 for (var x = 0; x < elem.length; x++) { 25 var opt = elem[x]; 26 if (opt.selected) { 27 //this.queries[elem.name] = opt.value; 28 this.addParam(elem.name, opt.value); 29 } 30 } 31 } else if (elem.tagName == "TEXTAREA") { 32 //this.queries[elem.name] = elem.value; 33 this.addParam(elem.name, elem.value); 34 } 35 } 36 37 return this.build(isEncoding); 38 } 39
クエリ文字列生成のJavaScriptを変更してみましたが、上手く動きませんでしたので、
HTML側で見た目だけのチェックボックスを作り、onoff判定はhiddenで渡そうとしましたが、
Uncaught TypeError: Cannot read property '0' of undefined
のエラーが出ました。素直にIF文でチェックされている行のみをRPG側に渡すほうがよろしいでしょうか。
lang
1+"<input type='checkbox' id='chkflg' name='FFLG' checked='checked'>"//見た目だけのチェックボックス 2 //チェックされていない場合HS1_SKFLGにoffを 3 if(!document.forms.listForm.chkflg[i].checked){ 4 document.listForm.HS1_SKFLG[i].value = "off"; 5 } 6 7+"<input type='hidden' name='HS1_SKFLG' /></td>" 8
回答4件
あなたの回答
tips
プレビュー