WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:文字列連結とjsファイル

0:[投稿] さもはん [MAIL] [2002/09/25 12:02 ][環境:WIN+IE ASP]

はじめまして。初めてのweb開発をしているものです。
ASPだけどVBでdllつくってCOMでうごかしてます。
画面の入力域チェックをしたいのですが,そのチェックを
jsファイルにしてテンプレートと切り離しました。
それで、テキストボックスのチェンジイベントで
禁則文字が入力されていないかそのテキストボックスのVALUEを
引数として渡してチェックをしていたら,
同じ禁則文字を2回入力されると値がチェンジしてないので
イベントが発生せず禁則文字がデータとして入ってしまうという
バグを生んでしまいました。
そこで、テキストボックスごとにチェックをするのではなく
submitを押された時に全てのテキストボックス内の値をチェック
するよう指示があったのですが,テキストボックスの数は動的に
変わるので、ベタではかけません.またhidden項目に数はそのつど
保持しているのですが,テキストボックス名
(txtCHG_COMM+行番号といった形で一意にしている)をどのように
取得すればよいのか分かりません。
どうか良いアドバイスをお願いいたします。

jsファイルのJavaScript
/ -----------------------------------------------------------------------------
// 禁則文字チェック
// -----------------------------------------------------------------------------
// 【概要】禁則文字が含まれている場合エラーを返す
// 【引数】チェック対象の文字列を改めレコード数(テキストボックス数に対応)
//   strInp : チェック対象の文字列
//  返り値:"0"またはエラー番号
// -----------------------------------------------------------------------------
function illegalchar(RecordCount){
   for(i=0 ; i<RecordCount-1 ; i++){
    strInp=document.frmMain.txtCHG_COMM+i.value

    if((strInp.indexOf("'") >=0)        // 半角シングルクォーテーション
    || (strInp.indexOf("\"")>=0)        // 半角ダブルクォーテーション
    || (strInp.indexOf(",") >=0)        // 半角カンマ
    || (strInp.indexOf("|") >=0)        // 半角パイプ
    || (strInp.indexOf("\t")>=0)        // タブ
    || (strInp.indexOf("\\")>=0)        // 半角エン
    || (strInp.indexOf("−")>=0)){        // 半角チョウオン
        alert("「\'」「\"」「\,」「\|」「\\」「\−」は入力できません。");
        return false;                    // エラー
    }
    return true;            // チェックOK
   }
}

この行で(strInp=document.frmMain.txtCHG_COMM+i.value)
理想としてはdocument.frmMain.txtCHG_COMM0.value
とかdocument.frmMain.txtCHG_COMM1.value
とか言う風にiのインクリメントに沿ったテキストボックス名なのでそのVALUEをほしいのですが,
現段階として上のように書くともちろん
strInp=document.frmMain.txtCHG_COMMi.valueとして認識されますし,
されなかったとしてもこのやり方で本当に値が取得できるのか
が不安です.

JavaScript初心者であり,VBしか経験がないので,
書き方がよく分かりません.
よろしくご指導お願いいたします。



1:[回答] JTR [2002/09/25 13:11 ]

今日は自信ないけど...。試しに。
document.frmMain["txtCHG_COMM"+i].value


2:[回答] さもはん [2002/09/25 13:40 ]

回答ありがとうございます。
早速試してみましたが,残念ながら「識別しがない」
というエラーがでてしまいhtmlが開きませんでした。

自分でもチョコチョコ試してみたのですが,

    var strcont="txtCHG_COMM"+ new String(i)
    strInp=document.frmMain.strcont.value
こんな感じにしますと,ファイルは開いてもsubmitするとエラーでした。
strcontにtxtCHG_COMM0という文字が
はいるのですが、
「document.frmMain.strcont.valueというオブジェクトはありません」
というエラーになりました。

なので、
    var strcont="txtCHG_COMM"+ new String(i)
    strInp=document.frmMain.[strcont].value
これも試して見ましたが,やっぱり識別子がないエラーが起きました.

勉強しつつがんばっているのですが・・・まだ突破口がつかめず・・・です。
どうかよろしくおねがいいたします。


3:[回答] ween [2002/09/25 14:20 ]

> strInp=document.frmMain.[strcont].value
frmMain と [ ] の間に "." は要りません。
# >>1 を試した時も frmMain の後に "." を入れてませんでした?


4:[回答] JTR [2002/09/25 14:23 ]

var strcont="txtCHG_COMM"+ new String(i)

なら

strInp=document.frmMain[eval(strcont)].value
でどう?


5:[回答] JTR [2002/09/25 14:27 ]

あぁ、勘違い。
strInp=document.frmMain[strcont].value
evalはいらないですね!



6:[完了] さもはん [2002/09/25 14:32 ]

回答ありがとうございます。

おもいっきり"."を入れていました。
今度こそ# >>1 のとおりに書き直してみたところ、
きちんと動きました。
とんちんかんな#>>2をかいてしまい、すみませんでした。

本当にどうもありがとうございました。


回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World