0

CodeIgniter に基づいた新しい Web サイトに取り組んでいます。入力値に応じてフォームの一部の要素を非表示にしようとしていますが、フィールドは非表示にならず、無効のままです。

これが私が持っているコードです:

HTML :

<div class="clearfix">
    <label for="form-timezone" class="form-label">Filters<small>Options</small></label>
    <div class="form-input">
        <?php 
            echo form_dropdown('filter', $filters,'', 'id="form-timezone"');
            echo form_dropdown('city', $cities, '', 'id="city"');
            echo form_dropdown('country', $countries, '', 'id="country"');
        ?>
    </div>
</div>

これは基本的に次のようなものを提供します:

<div class="clearfix">
    <div class="form-input">
        <select name="filter" id="form-timezone">
            <option value="city">City</option>
            <option value="country">Country</option>
        </select>
        <select name="cities" id="city">
            <option value="Paris">Paris</option>
            <option value="London">London</option>
        </select>
        <select name="countries" id="country">
            <option value="fr">France</option>
            <option value="en">England</option>
        </select>
    </div>
</div>

JS:

$(function() {

    $("#city").hide();
    $("#country").hide();

    $("#form-timezone").change(function() {
        if ( $("#form-timezone").val() == "city"){
            $("#city").show();
            $("#country").hide();
        }
        else if ( $("#form-timezone").val() == "country"){
            $("#city").hide();
            $("#country").show();
        }
    });
});

html にフィールドを追加して<input>、それを js で非表示にしようとしましたが、うまくいきました。理由はわかりませんが、 のみがform_dropdown隠れていないようです...

誰かが私が間違っていることを知っていますか?

ありがとう。

4

4 に答える 4

0

それはこのフィドルで私のために働きます。

投稿したJavascriptコードには});、DOMレディハンドラーの後にクロージングがありませんでした。<select>出力は各PHPechoステートメントの要素であると想定しました。

于 2012-07-31T15:38:16.803 に答える
0

フォームフィールドが「無効のまま」であるとおっしゃっています。これは、そもそも障害者であることを意味しますか?無効にしたフォーム要素は、すべてのブラウザ(Firefox)でイベントをキャプチャするわけではありません。

そうでない場合は、jsfiddleを提供できますか?

于 2012-07-31T15:39:35.157 に答える
0

働かないって言ってる意味がわからん ただし、if ステートメントを使用しないと、コードははるかに単純になります。

$("#form-timezone").change(function() {
     var el =  $('#' + $(this).val()); // <-- store matched element
     el.show();  // <-- show matched element
    $("#country,#city").not(el).hide(); // <-- hide unmatched element
});

そして、それらはこのフィドルで正常に動作します (非表示になり、無効になりません) - Firefox/Chrome/IE9 でテスト済み

http://jsfiddle.net/5LNWr/1/

于 2012-07-31T15:33:49.297 に答える
0
<div class="clearfix">
    <div class="form-input">
        <select name="filter" id="form-timezone">
            <option value="city">City</option>
            <option value="country">Country</option>
        </select>
        <!-- Here a select foreach city and country -->
    </div>
</div>

City と Country の ID がないことがわかりますか? ここでは ID を選択できません。

$("#city").show();
$("#country").hide();

うまくいきません。たぶん試してみてください

var $firstOption= $(“#form-timezone option:first”)
于 2012-07-31T15:50:06.333 に答える