DOBON.NET DOBON.NETプログラミング掲示板過去ログ

input ボタン

  • 題名: input ボタン
  • 著者: ばかぼん
  • 日時: 2004/09/25 11:25:55
  • ID: 6324
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[vb.net]
分類:[.NET]

どなたか教えてください。

フォームの各項目にinputボタンを配置して、onclickでjavascriptへ飛ばし、
javascript内で、取得した値をフォームの項目にセットしています。

<input id="txcode1" onclick="fnscript()" >

ある条件の場合、ボタンを無効(押せないように又は、onclickからjavascriptへ飛ばないように)したいのです。

javascriptは他のフォームと共用なので、できれば変更はしたくありません。
何かよい方法はありますか?
  • 題名: Re[1]: input ボタン
  • 著者: java.lang.Nullpo
  • 日時: 2004/09/25 13:24:34
  • ID: 6325
  • この記事の返信元:
  • この記事への返信:
  • ツリーを表示
■No6324に返信(ばかぼんさんの記事)
> どなたか教えてください。
> ある条件の場合、ボタンを無効(押せないように又は、onclickからjavascriptへ飛ばないように)したいのです。
> javascriptは他のフォームと共用なので、できれば変更はしたくありません。
> 何かよい方法はありますか?

どのレヴェルで「共用」と仰っているのか判りませんので、回答は難しいのですが、
以下でそれとなく出来るのではないでしょうか...

 ・ダミー項目を重ねて、可視と不可視を切り替える。
 ・OnClick Attributeを一時的に空にする。

ただ、どちらもWebページをRefreshしなきゃいけません。
Webでは何かとコンポーネントの変化に弱いのがつらいですね。
■No6325に返信(java.lang.Nullpoさんの記事)

> どのレヴェルで「共用」と仰っているのか判りませんので、回答は難しいのですが、
説明不足ですいません。1プロジェクト内で共通です。

>  ・ダミー項目を重ねて、可視と不可視を切り替える。
ダミー項目を設定しようとしましたが、項目を重ねることはできませんでした。
どうやって重ねるのですか?

>  ・OnClick Attributeを一時的に空にする。
OnClick=""で、javascriptには飛ばなくなりました。
そこで、OnClick Attributeの中を変数で持てたら...と思いましたが、ダメでした。
変数は無理なのでしょうか?

よろしくお願いします。
■No6340に返信(ばかぼんさんの記事)
>>どのレヴェルで「共用」と仰っているのか判りませんので、回答は難しいのですが、
> 説明不足ですいません。1プロジェクト内で共通です。
1プロジェクト内だったら、「共用」とは言わないのでは?
ひょっとして、自分の部署のあるプロジェクトという意味でしょうか?
会社内でのプロジェクトなのか、Visual StudioとしてのProjectなのか...

> ダミー項目を設定しようとしましたが、項目を重ねることはできませんでした。
画面デザイナ上を、マウスでドラッグしても重ねることはできませんので、
キーボードからやるか、プロパティからLocationを値を同じにすればよいです。

> OnClick=""で、javascriptには飛ばなくなりました。
> そこで、OnClick Attributeの中を変数で持てたら...と思いましたが、ダメでした。
> 変数は無理なのでしょうか?
変数で持ちたいのは、属性自体の話でしょうか?
属性自体は当然String型として持つことは可能ですが、
Java Scriptの関数に自分の意図した変数を渡すこはできません。

また、今回HTMLソースに直接属性を施したコントロールを使っているのか、
Attributeを使っているのかで方法も変わるかと思われます。
Attributeをソース上で割り当てるのでしたら、一時的に空にすることは可能ですが。
もし、カスタムコントロールを使っているのでしたら、そういうメソッドを作れば良いでしょう。
当然、その時にどこかの変数(この場合はプロパティ変数が妥当でしょうか?)に退避しておけばかなり楽ですね。
この方法、共用で使用していても他の方へは迷惑がかかりませんし、保守が楽です。

# ということで、コントロールがどのように実装されているかご説明願います。m(_ _)m
■No6341に返信(java.lang.Nullpoさんの記事)
> ひょっとして、自分の部署のあるプロジェクトという意味でしょうか?
> 会社内でのプロジェクトなのか、Visual StudioとしてのProjectなのか...
何度もすいません。社内のプロジェクトです。

できれば、OnClick Attribute を一時的に空にする方法を取りたいのですが、
よい方法はありますか?
よろしくお願いします。

現状は、HTMLソースで、
Attributeをソース上で割り当てています。
 <input onclick="fnScript()" type="button" value="x">

それで一時的にonclickを空にしたらjavascriptへ飛ばないようになったので
 <input onclick="" type="button" value="x">

属性を変数にして制御できないかと思ったのですが、ご指摘通りできませんでした。
 ・vb側で、変数をセットし
   if xxx="1" then parm="fnScript()"
     else parm=""
   endif
 ・html側で変数を送る
   <input onclick="parm" type="button" value="x">


現状は↑このような感じです。これで分かるでしょうか?
■No6343に返信(ばかぼんさんの記事)
> できれば、OnClick Attribute を一時的に空にする方法を取りたいのですが、
> よい方法はありますか?
> よろしくお願いします。

まだ、私が質問内容を勘違いしている可能性がありますが、
空にする前に属性を何かの変数に退避すれば良いのではないでしょうか。
で、復帰させたい場合は、退避しておいた属性を設定しなおす。

Source:-------------------------------------------------------------------

' プライベート メンバ 変数
Private m_strAttribute As String

' Button2で、属性をm_strAttributeに退避しつつ空にする
Private Sub Button2_Click(略)
    m_strAttribute = Button1.Attributes.Item("OnClick")
    Button1.Attributes.Item("OnClick") = ""
End Sub

' Button3で、退避した属性を設定しなおす
Private Sub Button3_Click(略)
  If m_strAttribute <> "" Then
      Button1.Attributes.Item("OnClick") = m_strAttribute
  End If
End Sub

--------------------------------------------------------------------------


一時的に使えなくする程度なら上記で十分ではないかと...。
ただ、以下を見る限り、もっと複雑なことをやろうとしているのかなと思ったのですが。


> 属性を変数にして制御できないかと思ったのですが、ご指摘通りできませんでした。
>  ・vb側で、変数をセットし
>    if xxx="1" then  parm="fnScript()"
>               else  parm=""
>    endif
>  ・html側で変数を送る
>    <input onclick="parm" type="button" value="x">
  • 題名: Re[6]: input ボタン
  • 著者: ばかぼん
  • 日時: 2004/09/27 13:39:00
  • ID: 6349
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
思った通りの動きになりました!
単純に一時的に使えなくするだけでよかったみたいです。

>java.lang.Nullpoさん
よく分からない説明にも関わらず
最後まで教えてくださってありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板