disabledの状態(ture/false)をIF文の条件

[新着] Webテンプレートを仮オープンしました



0   名前: さいかの : 2007/06/30(土) 17:44  ID:ZMjH7xsQ sub-hB
disabledの状態(ture/false)をIF文の判断条件にしようとしたのですがうまくいきません。
書き方が間違っているのか、
それともオブジェクト自体が持っている値で無いと駄目なのでしょうか?
教えてくださいm(_ _)m




function InputControl() {
if (this.disabled == true) {alert("条件は1つしか入力できません");}}


<input type="text" name="txt" onClick="InputControl()" >
<input type="button" value="有効" onClick="txt.disabled = false;">
<input type="button" value="無効" onClick="txt.disabled = true;">


1   名前: 匿名 : 2007/06/30(土) 17:44  ID:rRa9.kRR sub-2m
書き方が間違っています。
function InputControl (theInput) {
    if (theInput.disabled) { ...; }
}
<form action="#">
  <p>
    <input type="text" name="txt" onclick="InputControl (this)">
    <input type="button" value="有効" onclick="this.form.elements.txt.disabled = false;">
    <input type="button" value="無効" onclick="this.form.elements.txt.disabled = true;">
  </p>
</form>

2   名前: さいかの : 2007/06/30(土) 17:44  ID:ZMjH7xsQ sub-hB
お返事ありがとうございます。
書き忘れていてすいません、
投稿したコードはコードを短くするために、disabledの処理をボタンで書きましたが、
本来はfunctionで処理しています(form action="#"も記入しております)。

返信いただいたコードを元に
function呼び出しのonclickに引数の(this)をたし、
function側も返信内容のものに書き換えたのですがうまく動きません、

elseにもalertを加え動かすと、
disabledになっていない状態だとelseのalertを出しますが。
disabledの時はifのalertを出しません。

それと投稿いただいたコードをhtmlに入れ動かしたのですが、
ifの処理をしていません、投稿者さんのパソコンでは動いたのでしょうか?…


↓修正したコード
function InputControl (theInput) {
    if (theInput.disabled) { alert("条件は1つしか入力できません"); }
  else { alert("条件を入力してください"); }
}
<form action="#">
  <p>
    <input type="text" name="txt" onclick="InputControl (this)">
    <input type="button" value="有効" onclick="this.form.elements.txt.disabled = false;">
    <input type="button" value="無効" onclick="this.form.elements.txt.disabled = true;">
  </p>
</form>



3   名前: 匿名 : 2007/06/30(土) 17:44  ID:epW2eUw6 sub-8t
>>1
HTMLでは属性名の大文字小文字を区別しない。onClickと書いても全く問題ない。

>>2
disabledでユーザ操作が無効にされ、そこではイベントを受け取れなくなります。
submit時にチェックするなど別のもので調べるのがいいのではないでしょうか。

しかし、disabledを設定したコントロールで何かしようとするのは不自然です。
仕様をはっきりとさせれば、readonly属性を使うなどの代替方法が見つかるかもしれません。

4   名前: さいかの : 2007/06/30(土) 17:44  ID:ZMjH7xsQ sub-hB
>3さん

返信ありがとうございます、
disabledだとイベントを起こせないのですか〜残念。。


今まである条件でdisabledの状態を切り替えていたものに、
追加でdisabledがクリックされた時エラーメッセージを加えたかったので、
そのままdisabledの状態をifの条件に使いたかったのですがうまくいかず。

そもそもdisabledの状態(ture/false)をIF文の判断条件に出来るのか、
質問してみた次第です。

ほかの方法に変更します、
ありがとうございましたm(_ _)m

5   名前: 匿名 : 2007/06/30(土) 17:44  ID:K.4sEtYQ sub-Cz
>>2-3
ごめんなさい、disabled な要素がターゲットにならないことを >>1 を書いた時点ですっかり頭から抜け落ちてますた。

> HTMLでは属性名の大文字小文字を区別しない。onClickと書いても全く問題ない。

それは知ってますが、どこかで node.onClick = function() { ..; } やら node.setAttribute('onClick', '..') やら書いて動かないという質問を見て以来、実用上小文字で統一させた方が良いと考えた次第。

DOM Events でも、イベント名自体は大文字・小文字を区別しません。

一覧へ戻る