0

コードに少し問題があります。ドロップダウン メニューから計算を実行しようとすると、テキスト ボックスに onChange されます。私は何日もそれを理解しようとして、関数をコーディングする方法をグーグルで調べてきました。これにアプローチする方法について誰か助けてくれたり、アドバイスをくれたりできますか?

function numGuest()
{
    var a = document.getElementById("guests");
    if(a.options[a.selectedIndex].value == "0")
    {
        registration.banq.value = "0";
    }
    else if(a.options[a.selectedIndex].value == "1")
    {
        registration.banq.value = "30";
    }
}
<select id="guests" name="guests">
<option value="0">0</option>
<option value="1">1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>

<input type="text" id="banq" name="banq" onChange="numGuest()" disabled />
4

3 に答える 3

1

登録は定義されていません。ゲスト要素を実行したのと同じ方法で、テキスト入力要素をフェッチする必要があります。また、onChangeリスナーは、テキスト領域ではなく選択メニューに接続する必要があります。

<html>
<script>
function numGuest()
{
    var banq = document.getElementById('banq');
    var a = document.getElementById("guests");

    if(a.options[a.selectedIndex].value == "0")
    {
        banq.value = "0";
    }
    else if(a.options[a.selectedIndex].value == "1")
    {
        banq.value = "1";
    }
}
</script>
<select id="guests" name="guests"  onChange="numGuest()" >
    <option value="0">0</option>
    <option value="1">1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
</select>

    <input type="text" id="banq" name="banq" disabled />
</html>
于 2012-10-03T02:59:49.737 に答える
0

id=banq (テキストフィールド) が無効になっているのはなぜですか?

有効にするには: document.getElementById('banq').disabled = false;

選択の値:

function numGuest(){
    var theGuestValForCalc = 0;
    var theFinalResult = 0;   

    theGuestValForCalc = document.getElementById('guests').options[document.getElementById('guests').selectedIndex].value;



    theFinalResult = theGuestValForCalc * 10 // or some value, calculation, etc.

    document.getElementById('banq').innerHTML = theFinalResult;

    // return theFinalResult;

}

于 2012-10-03T02:57:23.267 に答える
0

あなたのコードで:

> <input type="text" id="banq" name="banq" onChange="numGuest()" disabled />

これはおそらく読み取り専用フィールドであり、無効になっていないはずです。

onchange リスナーは select 要素上にある必要があります。また、便宜上、リスナー内の要素への参照を渡すことができます。

<select name="guests" onchange="numGuest(this)">

次に、numGuest 関数で次のようにします。

function numGuest(element) {

elementは、ハンドラーが関数を呼び出した要素への参照になります。

コントロールはフォームにあり、名前付きのフォーム コントロールはフォームの名前付きプロパティになると述べたので、コードを簡略化できます。

  var form = element.form;
  var banq = form.banq;
  var a = form.guests; // or element

選択したオプションに値がある場合 (以下の注を参照)、select 要素の value プロパティを直接使用できます。

  if (a.value == "0") {
    banq.value = "0";

  } else if (a.value == "1") {
    banq.value = "1";
  }

これで完了です。

ノート:

  1. オプションに value 属性またはプロパティがない場合、その値はテキスト コンテンツです。残念ながら、古いバージョンの IE はそれをサポートしていないため、使用する必要がありますselect.options[select.selectedIndex].text。しかし、最良のアイデアは、常にオプションに値を与えることです。そうすれば、select 要素の値を取得するだけです。
  2. フォーム コントロールの名前と ID を指定する必要はありません。成功するには名前が必要なので、名前を付けて ID は忘れてください。
于 2012-10-03T03:35:40.443 に答える