【無料配信♪】Renta !全タテコミ作品第1話

ラジオボタンでreadonlyの切替えをしたいのですが、どうもうまくいきません。ラジオボタンの値の拾い方でつまづいているようです。

<script Language="JavaScript">
<!--
function set( n ) {
document.main.Submit.value = document.main.elements[n].value;
document.main.Submit.style.backgroundColor = document.main.elements[n].style.backgroundColor;
document.main.年月日.value = 'やっほ';
document.main.年月日.style.background = 'white';
if (document.main.shori.value = '複写'){
document.main.年月日.readOnly = '';
alert(document.main.shori.value);
}
else if (document.main.shori.value = '修正'){
alert(document.main.shori.value);
document.main.年月日.readOnly = ture;}
}
// -->
</script>
<FORM NAME=main ACTION="★" METHOD="POST">

<INPUT TYPE="RADIO" NAME="shori" VALUE="修正" CHECKED onClick="set(0);">修正 <INPUT TYPE="Radio" NAME="shori" VALUE="複写" onClick="set(1);">複写<BR>
<INPUT TYPE="text" NAME="年月日" SIZE="20" VALUE="" readonly style="background-color : #FFCCCC;" style="ime-mode: inactive">

<INPUT TYPE="SUBMIT" NAME="Submit" VALUE="送信"></form>

A 回答 (3件)

まず、#1の方も指摘されていますが、フォーム部品の名前に全角文字は使わないようにした方が良いですね。

エラーの原因になることが多々あります。

それで、ラジオボタンの利用法ですが、ラジオボタンがチェックされているかどうかを拾う必要があると思いますよ。 document.フォーム名.ラジオボタン名[x].checkedというプロパティが真であるかどうかをチェックしないといけないでしょう。 特定のラジオボタンがチェックされているかどうかを拾うには、ラジオボタンはJavaScriptでは配列として管理されていますので、そのフォーム名とラジオボタン名に加えて、配列の番号を付記して行います。
ラジオボタンを拾って動作をチェックする部分のスクリプトを、以下のようにしてみてはいかがでしょうか。

if (document.main.shori[1].checked){
document.main.dated.readOnly= false ;
alert(document.main.shori[1].value);
}
else if (document.main.shori[0].checked){
alert(document.main.shori[0].value);
document.main.dated.readOnly= true ;}

多分これでうまく動いてくれると思います。
なお、readOnly属性の操作で、書込み禁止を解除する場合には、値なしを引き渡すよりもfalseを渡した方が確実ですよ。

ラジオボタンの扱いは、他のタイプのものとはちょっと違うので、慣れが必要ですね(私も先日こちらの回答で、ラジオボタンの扱いについて間違ったことを書いてしまいました…)。
参考になれば幸いです。 見当違いでしたら、ごめんなさい。
    • good
    • 0
この回答へのお礼

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

アドバイスのとおりで動きました。

>ラジオボタンがチェックされているかどうかを拾う必要があると思いますよ。

この点があいまいなままでやっていました。どうも動きが違うと繰り返していたらこのせいなのですね。

お礼日時:2003/07/23 15:17

>ラジオボタンの値の拾い方でつまづいているようです。



上記の通りだ何故かラジオボタンをクリックした時に関数を呼び出ししかも何故かそれぞれのラジオボタンに特有の引数を入れてるのでそれを利用すればわざわざdocumentを使わなくても場合わけで切るのでは?

if(n==0){
修正のラジオボタンを押した時の処理
}else if(n==1){
複写のラジオボタンを押した時の処理
}

if(n==1)は省略しても大丈夫なはずですが一応入れておきました。
    • good
    • 0
この回答へのお礼

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

>わざわざdocumentを使わなくても場合わけで切るのでは?

確かに、提示した中身だけだとそのとおりなのですが、員数の部分を今後なしにするつもりなので今回の質問になってしまいました。

お礼日時:2003/07/23 15:14

とりあえず



フォームの名前は全角文字は使わないように。

とりあえず、何をしようとしているのでしょうか?

document.main.年月日.value = 'やっほ';
document.main.年月日.style.background = 'white';

はif文の外にありますが(つまり関数が呼び出されるたびに動作しますが)それでいいのでしょうか?

あと

document.main.Submit.style.backgroundColor = document.main.elements[n].style.backgroundColor;

は何をしようとしているのでしょうか?
    • good
    • 0
この回答へのお礼

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

>はif文の外にありますが(つまり関数が呼び出されるたびに動作しますが)それでいいのでしょうか?

すみません。この部分はやりたいことと直接には関係ない部分でした。

>document.main.Submit.style.backgroundColor = document.main.elements[n].style.backgroundColor;
は何をしようとしているのでしょうか?

ここも同様でした。 (^^;

よけいな部分が多すぎる質問でした。

お礼日時:2003/07/23 15:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qselectを変更不可にしたい

いつもお世話になっております。
今回はselectについてお聞きしたいです。

ある条件でselectを選択不可にしようと思い、

if(...) Selectbox.disabled = true;

としておりますが、選択は不可能になりましたが灰色がかってしまいます。
できれば色は黒いままで選択不可にしたいのですがどのように
すれば実現できますでしょうか?
ご教授お願いします。

Aベストアンサー

たとえば、選べるけど、値が変えられないとかでしたらこんな感じで

<script>
function check(obj){
var s=obj.form.hoge;
if(obj.checked){
s.index=s.selectedIndex;
s.onchange=function(){this.selectedIndex=this.index;}
}else{
s.onchange=function(){return false;}
}
}

</script>
<form>
<input type="checkbox" onClick="check(this)">変更不可
<select name="hoge">
<option>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
</form>

Qjavascriptで編集可能不可能の切り替え

いつもお世話になっております。
javascriptを用いて、テキストボックスを状況によって編集可能、不可能を
変更するものを作っております。
現在、テキストボックス単品ではその動作が可能となっていますが、
複数のものに対してその動作を行うには、どうすればよいかわからず困っています。

現在のソースは以下のようになっています。必要な部分だけ抜き出しています。

<script type="text/javascript">
function display()
{
var tmp = prompt("password?","");//表示させるかどうか判別する
if (tmp == 1)
{
document.getElementById("textboxのID").readOnly = false;
}
else if (tmp == 2)
{
document.getElementById("textboxのID").readOnly = true;
}
}
</script>

<body onload="display();">
・・・・
</body>

テキストが一つや二つ程度ならこれでも十分ですが、今回は
テキストボックスが多数(100程度)あるので、このまま地道にやるのはどうかと思いました。

IDを数字にして、
for (var i = 0; i < 100; i++)
{
document.getElementById(i).readOnly = true;
}
とやってみましたが、これもdocument.getElementById("0") = true;単品では
成功しましたが、iが定義されていないというようなエラーメッセージが表示されて、
うまくいきませんでした。

以上の件を、ご教授お願いします。

いつもお世話になっております。
javascriptを用いて、テキストボックスを状況によって編集可能、不可能を
変更するものを作っております。
現在、テキストボックス単品ではその動作が可能となっていますが、
複数のものに対してその動作を行うには、どうすればよいかわからず困っています。

現在のソースは以下のようになっています。必要な部分だけ抜き出しています。

<script type="text/javascript">
function display()
{
var tmp = prompt("password?","");//表示させるかどうか判別する
if ...続きを読む

Aベストアンサー

こんにちは

単品、複数、a~bまで 
どれか分からなかったので一応単品、複数両方載せときます
(一応『複数に対して』とあるので複数だとは思いますが、スクリプトサンプルを見ると数字にあわせたtextboxをreadonly=false;にするのかなと思ったりもして・・・)
あとidを数字からはじめるのはNGになります

【単品】
<script type="text/javascript">
function display()
{
var tmp = prompt("password?",""); //表示させるかどうか判別する
if(tmp > 0 && tmp < 101) {
target = "b" + tmp+"";
document.getElementById(target).readOnly = false;
}
else { return false; }
}
</script>

<body onload="display1();">

<input type="text" id="b1" readonly>
<input type="text" id="b2" readonly>
以下 id="b100" まで

【複数】
<script type="text/javascript">
//class名を指定する為の準備//
document.getElementsByClassName = function (className) {
var i, j, eltClass;
var objAll = document.getElementsByTagName ? document.getElementsByTagName("*") : document.all;
var objCN = new Array();
for (i = 0; i < objAll.length; i++) {
eltClass = objAll[i].className.split(/\s+/);
for (j = 0; j < eltClass.length; j++) {
if (eltClass[j] == className) {
objCN.push(objAll[i]);
break;
}
}
}
return objCN;
}

function display()
{
var tmp = prompt("password?",""); //表示させるかどうか判別する
if(tmp > 0 && tmp < 101) {
target = "b" + tmp+"";
obj = document.getElementsByClassName(target);
for(i=0;i<obj.length;i++) {
obj[i].readOnly = false;
}
}
else { return false; }
}
</script>

<body onload="display();">

<input type="text" class="b1" readonly>
<input type="text" class="b2" readonly>
<input type="text" class="b1" readonly>
<input type="text" class="b1" readonly>
<input type="text" class="b2" readonly>

※デフォルトのreadonlyが逆であるなら
<input>のreadonlyを消して
obj = document.getElementsByTagName("input");
for(i=0;i<obj.length;i++) {
obj[i].readOnly = true;
}

if(tmp > 0 && tmp < 101) {
の下に入れてください

※if(tmp > 0 && tmp < 101)の数値【101】は
単品の場合はid="b100"まで作る予定(?)なので101にしてます(idの数を指定)
複数の場合はclassの数を指定してください(class="b5"まで分けるなら『6』を指定)

こんにちは

単品、複数、a~bまで 
どれか分からなかったので一応単品、複数両方載せときます
(一応『複数に対して』とあるので複数だとは思いますが、スクリプトサンプルを見ると数字にあわせたtextboxをreadonly=false;にするのかなと思ったりもして・・・)
あとidを数字からはじめるのはNGになります

【単品】
<script type="text/javascript">
function display()
{
var tmp = prompt("password?",""); //表示させるかどうか判別する
if(tmp > 0 && tmp < 101) {
target = "b" + tmp+""...続きを読む

Qフォーム内checkboxのチェック可・不可の切替

お問い合わせフォームを作ろうと思っております。
その中で、一方のチェックボックスにチェックを入れると、別のチェックボックスが入力不可になるような動作のものをjavascriptにて作りたいのですが、どうも上手くいかずにおります。。

具体的には、下記のような内容のものを作ろうと思っています。
http://www.gazo.cc/up/19941.jpg

Q.1ですが、(1)、(2)それぞれの選択1・選択2は同時にチェックする事はできないようにしたいです。
ただし、『(1)の選択1・(2)の選択2』また『(1)の選択2、(2)の選択1』という組み合わせのチェックは可能です。

Q.2ですが、特に無しを選択すると、選択1、選択2、選択3はチェックする事はできないようにしたいです。
また可能でしたら、下にある、2箇所テキスト入力部分は、選択3が選択されないと入力不可の状態にしたいと思っています。


ご回答の程、よろしくお願い致します。

Aベストアンサー

チェックボックスにdisabledという属性を設定すれば入力不可にできるので、
onclickイベントで希望の処理をすればいいと思います。

とても簡単に書くと
<html>
<body>
<form name="f1">
選択1<input type="checkbox" name="chk1" onClick="document.f1.chk2.disabled = this.checked;">
選択2<input type="checkbox" name="chk2" onClick="document.f1.chk1.disabled = this.checked;">
</form>
</body>
</html>
としておけば、選択1をチェックしたら選択2は入力不可になります。

あくまでもサンプルですので、参考までに。

Qjavascriptでセッションを取得

javaのsession.setAttribute()でセットした値をjavascriptで取得することは可能なのでしょうか?
可能であれば、手法を教えていただければと思います。
よろしくお願いします。

Aベストアンサー

セッションIDの保存はcookieかURLに連結する方法しか有りませんから、
JavaScriptでdocument.cookieや<a href="">を解析するなどしてセッションIDを取得することは可能だと思います。

セッションIDとセッションの値・内容との関連づけはサーバーで行われていますから、
その値を取得するにはAjaxなどで読み込むとかしないと無理だと思います。

Qdiv要素内の全input要素をdisable

Javascriptで、あるdiv要素内のチェックボックスやテキストフィールドなどのinput要素を
すべてdisableにしたいです。
以下でうまくいきません。どなたかお知恵を頂けないでしょうか?
よろしくお願い致します。
var input_tags = document.getElementById("div_id").getElementsByTagName("input");

for(var input_tag in input_tags)
{
input_tag.disabled = true;
}

Aベストアンサー

var input_tags = document.getElementById("div_id").getElementsByTagName("input");

for(var i=0;i<input_tags.length;i++){
input_tags[i].disabled = true;
}

QCSSでreadonlyの機能はありますか?

ASPにてCSSを使用しています。
inputタグを読取専用(readonly)にしたいのですが、
スタイルシートでの指定の仕方がわかりません。
よろしくお願いします。

Aベストアンサー

> スタイルシートでも「IME-mode」の設定等、入力に関する制御も可能でしたので

それは某ブラウザが勝手に CSS を拡張して付けた機能で、本来の CSS ではそのようなことはできません。
CSS はあくまでも見た目つまりスタイルをデザインするためのものだと考えるべきです。

Qボタンを動的にdisabledさせたいのですが

お世話になります。

ある画面に複数ボタンがあって
押されたボタンをdisabledにしたいなと思っています。
ただしどのボタンがおされても同じ関数に飛んでほしいのですが
いまいち解決できません。

<form name="form">
<input type="button" name="syori1" value="ボタン1" onClick="javascript:hogehoge()">
<input type="button" name="syori2" value="ボタン2" onClick="javascript:hogehoge()">
<input type="button" name="syori3" value="ボタン3" onClick="javascript:hogehoge()">
</form
>
とあった場合

function hogehoge(){
document.form.ボタンの名前.disabled=true;
}

としたいのですが
名前の部分は動的に変えることは可能なのでしょうか?
普通に
document.form.syori1.disabled=true;
と書けば簡単なのですが、ボタンの数が決まっていないためボタン名を指定して書くことはできません。

ボタン名は
onClick="javascript:hogehoge(document.form.ボタンの名前.name)"
で、送ることができるのは確認したのですが
hogehoge(ボタンの名前)
の方でどうやってdisabledのところに入れればいいか解りません。
よろしくお願い致します。

お世話になります。

ある画面に複数ボタンがあって
押されたボタンをdisabledにしたいなと思っています。
ただしどのボタンがおされても同じ関数に飛んでほしいのですが
いまいち解決できません。

<form name="form">
<input type="button" name="syori1" value="ボタン1" onClick="javascript:hogehoge()">
<input type="button" name="syori2" value="ボタン2" onClick="javascript:hogehoge()">
<input type="button" name="syori3" value="ボタン3" onClick="javascript:hogehoge()">
</form
>
...続きを読む

Aベストアンサー

そういう場合は名前じゃなくて、thisというオブジェクトを渡します。

<script language=javascript>
function hogehoge(btn){
btn.disabled=true;
}
</script>
<form name="form">
<input type="button" name="syori1" value="ボタン1" onClick="javascript:hogehoge(this)">
<input type="button" name="syori2" value="ボタン2" onClick="javascript:hogehoge(this)">
<input type="button" name="syori3" value="ボタン3" onClick="javascript:hogehoge(this)">
</form>

Qセレクトメニューを選択不可にしつつvalueの値を生かす方法

いつもこのサイトを利用させていただいています。
セレクトメニューの選択不可はdisabledを使えばできることがわかったのですが、それだとvalueの値が保持されませんよね。
選択不可なんだけど、value=""の値を持たせたいのですが、どのようにすればよいでしょうか?
ご教授よろしくお願いします。

Aベストアンサー

disabledされるであろう項目名と同じ項目名について、
HIDDENで定義します。名前は、_h を付けるとか。
初期値では、disabledで無効化して置き、

if (fOBJ["data_kit"][1].checked) {
fOBJ["pc_os"].disabled = false;
fOBJ["pc_os_h"].disabled = true;
}
else {
fOBJ["pc_os"].disabled = true;
fOBJ["pc_os_h"].disabled = false;
}

なんてコードで有効にしてしまう。
なんてアイディアではどうでしょうか?

もちろん。受け側でも、_h 付きに付いてもチェックして頂く必要があるのですけど。

# 試してないので分かりませんが、_h なしでも動く様な気もすこし。。。

Q文字列が入っているtdを削除せず非表示にしたい

aboutをクラスとする列(以下、about列)を非表示にしようと、次のような設定をしました。

<style type="text/css">
th.about,
td.about{
width:0px;
border:0px;
}
</style>


<table>
<tr>
<th class="about">右が1へのリンクになります</th>
<th><a href="http://www1..com">ウェブサイト1</a></th>
</tr>
<tr>
<tr>
<td class="about">右が2へのリンクになります</td>
<td><a href="http://www.2.com">ウェブサイト2</a></td>
</tr>
<tr>


</tr>
</table>

aboutの長さ自体を0にするように設定したため、about列は表示されないはずなのですが、"右が1へのリンクになります"、"右が2への~"と表示されます。
プログラムの動作にかかわるので、about列を削除することなく、CSSなどを設定することでabout列を非表示にしたいのですが、何か上手な方法はあるでしょうか。

よろしくお願いします。

aboutをクラスとする列(以下、about列)を非表示にしようと、次のような設定をしました。

<style type="text/css">
th.about,
td.about{
width:0px;
border:0px;
}
</style>


<table>
<tr>
<th class="about">右が1へのリンクになります</th>
<th><a href="http://www1..com">ウェブサイト1</a></th>
</tr>
<tr>
<tr>
<td class="about">右が2へのリンクになります</td>
<td><a href="http://www.2.com">ウェブサイト2</a></td>
</tr>
<tr>


</tr>
</table>

aboutの長さ自体を0にするように設定し...続きを読む

Aベストアンサー

<table summary="なんたらの表">
<caption>なんたらの表</caption>
<tbody>
<tr>
<th>・・・</th>
<th>・・・</th>
</tr>
<tr>
<td>・・・・</td>
<td>・・・・</td>
</tr>
</tbody>
</table>

<table summary="ほげほげの表">
<caption>ほげほげの表</cpation>
<tbody>
<tr>
<th>・・・</th>
<th>・・・</th>
</tr>
<tr>
<td>・・・・</td>
<td>・・・・</td>
</tr>
</tbody>
</table>

<table summary="むにゃむにゃの表">
<caption>むにゃむにゃ</cpation>
<tbody>
<tr>
<th>・・・</th>
<th>・・・</th>
</tr>
<tr>
<td>・・・・</td>
<td>・・・・</td>
</tr>
</tbody>
</table>

<table summary="へんてこな表">
<caption>へんてこ</cpation>
<tbody>
<tr>
<th>・・・</th>
<th>・・・</th>
</tr>
<tr>
<td>・・・・</td>
<td>・・・・</td>
</tr>
</tbody>
</table>

だとして、
table{
border-collapse:collapse;
border:solid 1px gray;
}
td,th{border:dotted 1px gray;width:20em;
}
table[summary="なんたらの表"] td,table[summary="なんたらの表"] th{display:none;}
table[summary="なんたらの表"] *+td,table[summary="なんたらの表"] *+th{display:table-cell;}

table[summary="ほげほげの表"] td,table[summary="ほげほげの表"] th{visibility:hidden;}
table[summary="ほげほげの表"] *+td,table[summary="ほげほげの表"] *+th{visibility:visible;}

table[summary="むにゃむにゃの表"] td:first-child,table[summary="むにゃむにゃの表"] th:first-child{display:none;}

table[summary="へんてこな"] td:first-child,table[summary="へんてこな表"] th:first-child{visibility:hidden;}


消滅させるならdisplay:none;→display:table-cell;
存在は残すけど表示させないならvisibility:hidden;→visibility:visibble;

セレクタは適当に・・・
隣接セレクタを使うなら +
第一列なら、擬似クラス:first

<table summary="なんたらの表">
<caption>なんたらの表</caption>
<tbody>
<tr>
<th>・・・</th>
<th>・・・</th>
</tr>
<tr>
<td>・・・・</td>
<td>・・・・</td>
</tr>
</tbody>
</table>

<table summary="ほげほげの表">
<caption>ほげほげの表</cpation>
<tbody>
<tr>
<th>・・・</th>
<th>・・・</th>
</tr>
<tr>
<td>・・・・</td>
<td>・・・・</td>
</tr>
</tbody>
</table>

<table summary="むにゃむにゃの表">
<caption>むにゃむにゃ</cpation>
<tbody>
<tr>
<th>・・・</th>
<th>・・・</th>
</tr>...続きを読む

Qテキストフィールドへの入力を禁止するには?

「JavaScript例文辞典」で掲載されている「テキストフィールドへの入力を禁止する」方法ですが....

http://www.openspc2.org/reibun/javascript/form_textfield/007/index.html

これを「入力禁止」と「入力可能」ボタンで切り替えていますが。そうではなくて、選択できない、最初から入力できない方法はどうやりますか?

単にテキストフィールドへの入力を禁止したいだけなので、他の書き方があれば教えて下さい。

Aベストアンサー

disabled も ネスケ4では動作しません。
どのブラウザでも入力不可にするには、No.1の回答にある「onFocus="this.blur()"」を使うしかありませんが、これだってJavaScriptがOFFだと無効です。

絶対に値を変えさせたくないのなら、送信用に hidden を使い、表示用に name なしの text を使ってはどうでしょうか。

<input type="hidden" name="name" value="xxx">
<input type="text" value="xxx" onFocus="this.blur()" style="background:#CCCCCC">

text の方は name が無いので送信されません。
ネスケ4では効きませんが、スタイルシートで背景色を変えれば、それなりには見えます。
これなら、たいていは書き換え不能ですし、最悪書き換えられてもデータは保護されます。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング