2011-07-12 16 views
0

これは動作しません。最初に関数に渡された変数を使用します。ラジオボタンのチェックを外すと、フォームフィールドが無効になり、その逆もあります。 lineid変数は、このラジオ/テキスト入力ペアを10個のその他のものから区別します。ラジオボタンのやりとりでテキストフィールドを有効/無効にする方法は?

マイコード:私のHTMLの

<script type="text/javascript"> 
function disablefield(lineid){ 
if (document.getElementById(lineid).checked == true){ 
document.dupedit.lineid.disabled = false; 
} else { 
document.dupedit.lineid.disabled = true; 
} 
} 
</script> 

サブセット。

+0

整数で始まるIDを持つことはできません。それがあなたの問題を引き起こしているのかどうかは確信していませんが、あなたはそれを見たいかもしれません。 – calumbrodie

+0

@kissmyface - HTML5ではありません:http://mathiasbynens.be/notes/html5-id-class –

+0

@Jamesもちろん、あなたは正しいです:-)私はまだ習慣からやっています。そのように見えるIDは(通常)あまりにも意味がありません。おそらく私は代わりにデータ属性を使用します。 – calumbrodie

答えて

1

は、あなたがそれを渡すときにdisablefield関数に文字列を渡すので、引用符で値を置く必要があるような何か:。

<input onclick="disablefield('2671997')" />

document.getElementByIdが期待するためです文字列、整数ではありません。

第2に、フィールドを有効/無効にするには、= 'disabled'ではなくdisabled = true;を使用する必要があります。

document.dupedit.lineidは、名前が "lineid"で、フォームには存在しないフィールドを探しています。私はフィールドにidを与え、もう一度document.getElementByIdを使用することを提案します。

name属性を引き続き使用する場合は、代わりにdocument.getElementsByNameを使用する必要があります。これは、(複数の要素が同じ名前を共有することができるため)一致する要素の配列を返しますが、あなたのコードで問題になっている要素は、その名前を持つ唯一のものであることがわかっている場合、あなたはこれを行うことができます。

document.getElementsByName(lineid)[0].disabled = true; 

あなたは働いているバージョンを見ることができます(私はこれがとにかくそれを望んでいた方法だと思います)hereheregetElementsByNameを使用したバージョンです。あなたは機能上の閉じ括弧が欠落している

+0

ありがとうございました - それを試して、以下の欠点を修正しましたが、それでも動作しません。コードを更新しています。申し訳ありません。あなたの編集内容を見て、編集しました。 – Dan

+0

ええ、私は名前にlineidを使用すると、関数に渡された値で置き換えられると思いました。例えば。 'document.dupedit。$ lineid' PHPの言葉で?とにかくそれをするには? – Dan

+0

@ダン - 最新の編集をご覧ください。私は間違いなく '名前 'ではなく' id'を使うことを推奨します。 –

1

また
function disablefield(lineid){ 
if (document.getElementById(lineid).checked == true){ 
document.dupedit.lineid='enabled'; 
}else{ 
document.dupedit.lineid='disabled'; 
} 
} //<-- here 

、私はあなたが関数にthisを渡す提案することができます。その後、電話する必要はありませんgetElementById

<input onclick='disablefield(this)' type..... 

function disablefield(obj){ 
    if (obj.checked == true){ 
     document.dupedit.lineid='enabled'; 
    }else{ 
     document.dupedit.lineid='disabled'; 
    } 
} 
1

私はあなたが必要と思うのは、コードを再考することです。

  • チェックボックスにIDを使用しないでください。無効にする/有効にするテキストフィールドにそのIDを移動し、チェックボックス自体ではなく、そのフィールドが無効/有効であるかどうかをチェックします。

  • use cleaner JS。

the jsFiddleをご覧ください。私はあなたのためにコンパイルしました。それはあなたが期待していることをしていますか、ダン?

関連する問題