0

ドロップダウン ボックスから選択されたアイテムに応じて、いくつかのアクションを実行する必要があります。

したがって、接頭辞が Blue のアイテムが選択されている場合にそれを作成する必要があり、その下に 1 つのテキスト ボックスを表示し、他のアイテムが選択されている場合は他のものを表示します。

詳細説明: わかりました...アイテムのリストを含むドロップダウン メニューがあります。私が作る必要があるのは、プレフィックス Blue の項目を選択した後、ドロップダウン メニューの下に入力フィールドが表示されるようにすることです。彼らが他のアイテムを選択すると、別のことが起こります。

これまでのところ、ドロップダウンメニューは次のとおりです。

<select id="select1" name="selectz1">
<?php
$id = 0;
while ($row = mysql_fetch_row($result)) {
    echo "<option value=$id>$row[0]</option>";
    $id++;
}
?>
</select>

そして、それが HTML が生成するものです。

<form action="ThisPage.php" method="POST">
Accounts: <br />
<select id="select1" name="selectz1">
<option value=0>account 2000-01</option><option value=1>account 2000-02</option>
<option value=2>blue 2000-03</option><option value=3>blue 2000-04</option>
</select>
</form>
4

3 に答える 3

14

それで、質問は、私が理解しているように、「 a の値に基づいてフォームフィールドを表示および非表示にするにはどうすればよい<select>ですか?」ということです。

始める前に、これはだまされています。そこでの回答の質に非常に満足していないので、慣習に逆らって自分の回答を投稿します。

まず最初に、ここでの他のすべての回答は完全に正しい軌道に乗っていますが、現在、彼らが何をしているのかを説明できていません。

他の例と同様に、この例ではjQueryを使用します。jQuery は、一連の反復的で冗長なタスクを大幅に軽減する素晴らしい Javascript ライブラリです。jQuery は$、ページへのアクセスと変更を可能にする -- はい、単なるドル記号 -- という関数を公開します。

ステップ1

既存のコードに似た最小限の例を作成しましょう。

<form>
    <select name="select1" id="select1">
        <option value="1">account 001</option>
        <option value="2">account 002</option>
        <option value="3">blue 001</option>
    </select>
    <input type="text" name="text1" id="text1">
</form>

注意すべき重要事項:

  1. 最新の HTML では、属性値 ( value="1") を引用符で囲む必要があります。
  2. jQuery でターゲットにする必要があるすべての要素は、簡単に識別できる必要があります。idここではsを使用しています。

ステップ2

イベントリスナーをアタッチしましょう。イベントは、ページを操作しているときに発生するものです。<select>この例では、イベントの をリッスンしますchange

<script type="text/javascript">
$(function() {
    $('#select1').on('change', function(event) {
        alert(this.value);
    });
});
</script>

それは、あまりスペースのない専門用語です。少し説明させてください。

  • $()jQueryへの関数呼び出しです。
  • $(function(){ ... })関数を jQuery オブジェクトに渡しています。これは、「jQuery、ページの読み込みが完了したら、この関数を実行してください」というショートカットです。
  • $('#select1')id「select1」で「d」された要素を見つけるようjQueryに依頼します
  • $('#select1').on('change', function ...)changeイベントを監視し、要求された関数を実行するよう jQuery に要求します。
  • 最後に、関数自体の内部で、要素alertの現在の値を含むダイアログをスローします。select

これは jsfiddleのデモです。

ステップ 3

これで、選択メニューが変更されるたびに Javascript が実行されるようになりました。そのテキストボックスを表示したり隠したりしましょう!

まず、非表示にする必要があります。Javascript を使用して表示および非表示にしているため、Javascript が実行できる場合にのみ非表示にするように指示する必要があります。Javascript を実行できない人から何かを隠すと、彼らは不機嫌になります。したがって、onload ハンドラに新しい行を追加します。

$(function() {
    $('#text1').hide();
    $('#select1'). // ...
});

その新しい行が「jQuery に text1 要素を非表示にするよう依頼する」であると推測した場合は、正しく推測できます。

では、「青」オプションをどのように監視すればよいでしょうか。そのjsfiddleに戻って、それで遊んでください。valueoptionが警告を受けていることに気付きましたか? それらはまったく青くありません!値だけでなく、実際に選択されoptionたものに到達する必要があります。それは少し面白いです。

に関する MDN のドキュメントを<select>見てみましょう。それ自体をHTMLSelectElementとして公開することを示しています。大きな驚きではありません。これには、選択されselectedIndexたものを示す というプロパティがあり、オプション自体に直接アクセスできるoptionというプロパティがあります。options甘い!

onload をもう一度更新しましょう。

<script type="text/javascript">
$(function() {
    $('#text1').hide();
    $('#select1').on('change', function(event) {
        var opt = this.options[ this.selectedIndex ];
        alert('You picked ' + $(opt).text());
    });
});
</script>

繰り返しますが、jsfiddle のデモです。

options配列があります。Javascript は、PHP と同様に、角かっこを使用して配列要素にアクセスします。

したがって、オプションを選択し、それを jQuery でラップしてからtextメソッドを呼び出して、フォーム値ではなく要素内のテキスト ノードを取得します。

これでstringができました。何ができるでしょうか?

ステップ 4

PHP と同様に、Javascript には、パターン マッチングを行う方法である正規表現があります。ねえ、私たちは一致するパターンを持っています!

<script type="text/javascript">
$(function() {
    $('#text1').hide();
    $('#select1').on('change', function(event) {
        var opt = this.options[ this.selectedIndex ];
        var picked_blue = $(opt).text().match(/blue/i);
        if(picked_blue) {
            alert('You picked a blue option!');
        } else {
            alert('You did not pick a blue option.');
        }
    });
});
</script>

繰り返しますが、jsfiddle のデモです。

オブジェクトmatchメソッドStringを使用して、正規表現を使用しています。blue特に、大文字と小文字を区別しない方法で文字を検索する正規表現(i最後の はそれを行います)。

このコードは現在、青いものを検出しているはずです。ついにそのテキスト フィールドを非表示にして表示する時が来ました!

ステップ 5

さっそく飛び込みましょう。

$(function() {
    $('#text1').hide();
    $('#select1').on('change', function(event) {
        var opt = this.options[ this.selectedIndex ];
        var picked_blue = $(opt).text().match(/blue/i);
        if(picked_blue) {
            $('#text1').show();
        } else {
            $('#text1').hide();
        }
    });
});

</p>

あなたはそれが来るのを見ましたか?それが何をするか推測できますか?

これがjsfiddle デモです。

これでミッションは完了です。これと同じテクニックをあらゆる種類のものに適用できます。

ここに散らばっているリンクに注意してください。特に、JavaScript と HTML の優れたプレイグラウンドである jsfiddle と、 Javascript と HTML の優れたリファレンスである MDN サイトへのリンクに注意してください。ああ、そしてjQueryのマニュアルへ。

于 2012-12-19T07:47:16.413 に答える
0

Javascriptを使用して実行できます。

ドロップダウン ボックスに id を指定します。選択されている場合は、その値に従って div を切り替えます。値は、 で取得できますvar item= document.getElementById('id').value;。それから、

function toggle()
{

var item= document.getElementById('yourdropdownid').value;

    if(item=='yourfirstoption')
    {
    document.getElementById('div1id').style.display="block";
    document.getElementById('div2id').style.display="none";
    }
    else if(item=='yoursecondoption')
    {
    document.getElementById('div2id').style.display="block";
    document.getElementById('div1id').style.display="none";
    }
}

例はこちらです。正確な例ではありません。しかし、この投稿に接続することで、そこから解決策を見つけることができることを願っています. 幸運を。

于 2012-12-19T06:46:06.263 に答える
0
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).on("change", "#color", function(){
        value = $(this).val().split('-')[0]; // extracting the color prefix from selected value
        if(value == 'Blue') // checking if value is Blue
        {
            $('#other').hide(); // hiding the div having id "other"
            $('#blue').show(); //showing div having id"blue"
        }

        else // if selected value have prefix other than Blue 
        {
            $('#blue').hide(); //hide the div having id "blue"
            $('#other').show(); // show the div having id "other"
        }

    });
</script>
<style>
    /* hiding both divs by default, these div will show up on dropdown change event depending upon the selected value */
    #blue, #other{display: none;}
</style>

<select id="color" name="color">
    <option value="">--Select--</option>
    <option value="Blue-value">Blue</option>
    <option value="Red-value">Red</option>
    <option value="Black-value">Black</option>
</select>

<div id="blue">
    your blue div
</div>

<div id="other">
    your other div
</div>
于 2012-12-19T06:54:28.570 に答える