- PR -

JavaScriptでのWebFormの選択のやりかた

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-27 16:17
引用:

hirasaneさんの書き込み (2003-11-27 15:04) より:

助言を元にいろいろやってみたのですが、どうにも上手くいきません。


 どう、うまくいっていないのでしょう?VBコードで追加している関数名と、JavaScriptで定義されている関数名が違うようですが、そういうことではなく?
hirasane
常連さん
会議室デビュー日: 2003/10/31
投稿数: 28
投稿日時: 2003-11-27 16:27
Jittaさん、ありがとうございます。

引用:

Jittaさんの書き込み (2003-11-27 16:17) より:
 どう、うまくいっていないのでしょう?VBコードで追加している関数名と、JavaScriptで定義されている関数名が違うようですが、そういうことではなく?



>Button1.Attributes.Add("OnClick", "CheckTest()")
済みません、書き込みのときに関数名を変えようとして、片方忘れて
いました・・・

両テキストボックスに入力、片方のテキストボックスに入力、入力なし、の
全てにおいてalert("NG")を実行します。
つまり、if文の「両テキストボックスに入力が有る場合」と「TextBox1 < TextBox2」
が正常に処理できていません。
AutoPostoBackを有効にすれば、JavaScriptでのクライアント処理時に、
テキストボックス・サーバコントロールの値が取得できると理解して
いるのですが、正しいでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-27 17:51
function checker() {
var t1 = document.Form1.all.TextBox1.value;
var t2 = document.Form1.all.TextBox2.value;
if (t1 != "" & t2 != "") {
if (t1 < t2) {
alert("textbox1 < textbox2");
return true;
} else {
alert("textbox1 >= textbox2");
return false;
}
} else {
alert("null");
return false;
}
return false;
}

いったん変数に受けてやると動きました。なぜ?
return true/falseは、それでポストバックが発生しなくなるかなと思ったのですが、無駄でした。


> AutoPostoBackを有効にすれば、JavaScriptでのクライアント処理時に、
> テキストボックス・サーバコントロールの値が取得できると理解して
> いるのですが、正しいでしょうか?

ここ、意味がわからないのですが、なにのAutoPostBackを有効にするのでしょう?asp:buttonは、規定でtype="submit"なので、必ずポストバックが発生します。
hirasane
常連さん
会議室デビュー日: 2003/10/31
投稿数: 28
投稿日時: 2003-11-27 18:25
Jittaさん、ありがとうございました。
Jittaさん作成のコードを元に動作させることができました。

質問なのですが、document.Form1の後、allと付けるのはどういった意味が
あるのでしょうか?

引き続き「return false」のときのPostBack制御について調査したいと思います。

>ここ、意味がわからないのですが、なにのAutoPostBackを有効にするのでしょう?
>asp:buttonは、規定でtype="submit"なので、必ずポストバックが発生します。
テキストボックスに入力した値は、いったんサーバ上で処理しなければ、
クライアント処理する際に値を取得できないと思いました。
JavaScriptで値を比較するのは、サーバへSubmitされる前だと思いますので、TextChangedイベントでサーバへ値を渡せるように、AutoPostBackを有効に
したのですが必要無いみたいですね。
いろいろと間違って理解しているみたいですが、どのあたりを誤認識している
のでしょうか?
いろいろとお手間をかけまして申し訳ありませんが、ご教授ください。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-27 18:46
> 質問なのですが、document.Form1の後、allと付けるのはどういった意味が
> あるのでしょうか?

 JavaScriptは今期から始めたので、私もあまり理解していません。今、MSDNで調べたら、使い方間違ってる…。正しくは、
document.all.item(アイテムの名前)
document.form1.all.item(アイテムの名前)
document.all(ドキュメントに上から出てくる順のインデックス)
document.form1.all(フォームに上から出てくる順のインデックス)
ですね。と、言うことで、
document.form1.textbox1
になおしておいてください。
document.allは、IEとネスケの判断をするときに使ったような?(ネスケにはallコレクションがない、とか)


> 引き続き「return false」のときのPostBack制御について調査したいと思います。

 これ、たぶん、無理です。または、htmlコントロールの<input type="button">で作成し、スクリプト中でポストバックを発生させます。私は<asp:button width="0px">なボタンを作成し、これをスクリプト中でクリックしてポストバックさせています。


> いろいろとお手間をかけまして申し訳ありませんが、ご教授ください。

 教授できるほどの知識もスキルもないです
#やっぱ教職課程は取ってしまうべきだった・・・
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2003-11-27 19:35
「return false」のときのPostBack制御について、ですが

Button1.Attributes.Add("OnClick", "CheckTest()")

Button1.Attributes.Add("OnClick", "return CheckTest()")
にすると、falseのときPostBackしないと思いますよ。
私のところのIE6ではできました。
hirasane
常連さん
会議室デビュー日: 2003/10/31
投稿数: 28
投稿日時: 2003-11-27 21:32
Jittaさん、べるさん、ありがとうございます。
私も制御することができました。
"OnClick"を"OnSubmit"でも可で、HTMLのformタグに書くこともできるみたい
ですね。
OnClickとOnSubmitは違いますので、どちらが正しいのでしょうかね?

ところで、JavaScriptでサーバコントロールを処理する、という点に関連して、
JavaScriptでクライアント処理する際に、テキストボックス(サーバコントロール)
に値を入力することは可能でしょうか?

入力文字をチェックし、半角数字以外の入力の場合は"OnKeyDown"で""(空)を
入力したいのですが。

いろいろと教えてもらってばかりで済みませんが、どうぞよろしくお願い致します。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2003-11-28 02:25
文字列を消すというのならば例えば
document.Form1.TextBox2.value="";
でできますよ。これをifの中に書けばいいわけですね。
#話題が.netでなくなってきましたが

スキルアップ/キャリアアップ(JOB@IT)