0

これが私の問題であり、すべての「ダーティ」コードです。これは私の本番コードではありませんが、現時点で機能させることを試みています。

基本的に必要なのは、ユーザーが[Not Ok]ラジオボタンを選択すると、その一意のセットのテキストエリアが表示されますが、[Not Ok]を選択すると、現在約13セットのすべてのエントリのテキストエリアが表示されます。現時点でmysqlデータベースから動的に生成される質問の数。私は、コード内の間違った場所にあるか、単にまったく存在しない一意のIDを使用して何かを実行する必要があると感じています。どんな助けでも大歓迎です。

<div data-role="collapsible" data-theme="b" data-content-theme="c">
<h3>Vehicle Check Information</h3>
<?php
$query = mysql_query("SELECT * FROM vehicle_q");
while($row = mysql_fetch_array($query)) {
    $q_title = $row['title'];
    $q_id = $row['id'];
?>

<div data-role="fieldcontain" style="border:0;">
<fieldset data-role="controlgroup">
<legend><?php echo $q_title; ?>:</legend>

<input type="radio" name="help[]" id="checkbox-1a" value="Ok" />
<label for="checkbox-1a">Ok</label>
<input type="radio" name="help[]" id="checkbox-2a" value="Not Ok" />
<label for="checkbox-2a">Not Ok</label>

</fieldset>

<div id="hidden_text-<?php echo $q_id; ?>" style="display:none;">

<script>
$(document).ready(function(){
$(":radio:eq(1)").click(function(){
$("#hidden_text-<?php echo $q_id; ?>").show(500);
});
$(":radio:eq(0)").click(function(){
$("#hidden_text-<?php echo $q_id; ?>").hide(500);
});
});
</script>

<fieldset data-role="fieldcontain">
<label for="<?php echo $q_title; ?>_t">Explain the Deficiency(If any):</label>
<textarea name="text_a[]" id="<?php echo $q_title; ?>_t"></textarea>
</fieldset>
</div>
</div>
<input type="hidden" name="q_title1[]" value="<?php echo $q_title; ?>" />

<?php
}
?>

</div>
4

3 に答える 3

0

ラジオ値に基づいて非表示要素を表示するために私が見つけた最も簡単な方法onchangeは、要素のID(既に持っている)に基づいてイベントを提供することです。あなたの場合、同じ名前に基づくラジオは2つしかないため、最も簡単な方法は単純なif/elseステートメントです。何かのようなもの:

<script type="text/javascript">
$(function(){
    $('#checkbox-1a').change(function(){
        if($(this).attr('checked')){
            $('#hidden-text-<?php echo $q_id;?>').hide(500);
        }else{
            $('#hidden-text-<?php echo $q_id;?>').show(500);
        }
    });
});
</script>

変更されたとき#checkbox-1aの説明:要素がチェックされている(選択されている)場合は、何かを実行します(あなたの場合は何かを非表示にします)、そうでない場合は何か他のことを実行します(あなたの場合は何かを表示します)。

于 2012-11-24T04:04:45.517 に答える
0

次のようなものを試してください:

<div data-role="collapsible" data-theme="b" data-content-theme="c">
    <h3>Vehicle Check Information</h3>
    <?php
    $query = mysql_query("SELECT id,title FROM vehicle_q");
    while($row = mysql_fetch_array($query)) {
        $q_title = $row['title'];
        $q_id = $row['id'];
    ?>
    <div data-role="fieldcontain" style="border:0;" class="groupings">
        <fieldset data-role="controlgroup">
            <legend><?=$q_title?>:</legend>
            <input type="radio" name="help[]" id="checkbox-<?=$q_id?>-1a" value="Ok" />
            <label for="checkbox-<?=$q_id?>-1a">Ok</label>
            <input type="radio" name="help[]" id="checkbox-<?=$q_id?>-2a" value="Not Ok" />
            <label for="checkbox-<?=$q_id?>-2a">Not Ok</label>
        </fieldset>
        <div id="hidden_text-<?=$q_id?>" class="hiddenText" style="display:none;">
            <fieldset data-role="fieldcontain">
                <label for="<?=$q_title?>_t">Explain the Deficiency(If any):</label>
                <textarea name="text_<?=$q_id?>_a[]" id="<?=$q_title?>_t"></textarea>
            </fieldset>
        </div>
    </div>
    <input type="hidden" name="q_title1[]" value="<?php echo $q_title; ?>" />
    <?php
    }
    ?>
</div>
<script>
    $(document).ready(function(){
        $(".groupings input:radio").click(function(){
            if (this.value == "Ok") {
                $(this).parent().next('.hiddenText').show(500);
            } else {
                $(this).parent().next('.hiddenText').hide(500);
            }
        });
    });
</script>

これはテストされていませんが、スクリプトを宣言する必要があるのは1回だけで、ラジオボタンに関連する残りの部分に適用されます。

于 2012-11-24T04:07:37.903 に答える
0

他の2つの答えは、問題を解決する方法です。サイドとして、これがおそらくそれが起こっている理由です。使用している場合-

$(":radio:eq(1)").click(function()
$(":radio:eq(0)").click(function()

そのインデックス位置の「任意の」ラジオボタンがページ上でクリックされたかどうかをチェックするクリックリスナーを使用しています。したがって、1インデックス位置のあるボタンはすべて$(":radio:eq(1)").click(function()実行されます。

編集 -

ラジオボタンidは、(1)ループごとに繰り返すときに一意ではなくwhile()、(2)特定のラジオボタンがクリックされたかどうかを確認するために使用できるため、変更する必要があります。

次のように変更してみてください-

...
<input type="radio" name="help[]" id="checkbox-1a-<?php echo $q_id; ?>" value="Ok" />
<label for="checkbox-1a">Ok</label>
<input type="radio" name="help[]" id="checkbox-2a-<?php echo $q_id; ?>" value="Not Ok" />
<label for="checkbox-2a">Not Ok</label>

</fieldset>

<div id="hidden_text-<?php echo $q_id; ?>" style="display:none;">

<script>
$(document).ready(function(){
$("#checkbox-2a-<?php echo $q_id; ?>").click(function(){
$("#hidden_text-<?php echo $q_id; ?>").show(500);
});
$("#checkbox-1a-<?php echo $q_id; ?>").click(function(){
$("#hidden_text-<?php echo $q_id; ?>").hide(500);
});
});
</script>
于 2012-11-24T04:19:23.127 に答える