0

チェックボックスのリマインダースクリプトが機能しています:http://mauricederegt.nl/test/index.html

チェックボックスのステータスを記憶しているだけなので、後でWebページに戻ったときに、チェックされていない状態のままになります。これはすべてうまくいきます。

次に、HTMLページにphpページを動的にロードする必要があります(元のphpページはデータベースからいくつかのものを取得し、名前のリストを表示します。そのリストの下にこのチェックボックスが表示され、続いてデータベースから別のリストが表示されます)。

チェックボックスをphpファイルに配置しましたが、phpファイルがロードされるとHTMLファイルに表示されます。jsファイルはまだHTMLファイルにロードされています(phpファイルにもロードしようとしましたが、効果はありませんでした)。

問題:チェックボックスがもう記憶されていません:(このデモを参照してください:http://mauricederegt.nl/test/index2.html

これは、ページが動的に読み込まれ、HTMLに表示されないためだと思いますか?

どうすればこれを修正できるので、チェックボックスが再び記憶されますか?

必要に応じて、jsコードのHTMLファイルのソースコードを参照してください(ここに投稿するには多すぎます)

敬具、

phpコード:

   <?php  
$q=$_GET["q"];
$checked = ($_GET['checked'] == 1 ) ? 'checked="checked"' : '';

if ($q == 1) {
echo '<ul>
        <li>Mike</li>
        <li>Peter</li>
        <li>Richard</li>
        <li>Quintin</li>
        </ul>
<div id="soundcheck" class="button blue"><input type="checkbox" value="Name" id="sound" '.$checked.' /><label for="sound"></label></div>
<ul>
        <li>Apple</li>
        <li>Banana</li>
        <li>Pineapple</li>
        </ul>';
}
?>
4

2 に答える 2

1

問題は、チェックボックスの記憶状態をチェックして設定するコードは、ページが最初に読み込まれたとき(DOM準備完了イベントにバインドされたとき)にのみ呼び出されるため、コンテンツを動的に読み込むときに呼び出されないことです。

既存のコードのこの部分を呼び出します。

$('div#soundcheck input:checkbox').each(function() {
    // on load, set the value to what we read from storage:
    var val = storedData.get(this.id);
    if (val == 'checked') $(this).attr('checked', 'checked');
    if (val == 'not') $(this).removeAttr('checked');
    if (val) $(this).trigger('change');
});

チェックボックスを動的にロードした後、それで問題が解決するはずです。

編集:既存のJavascriptのこのセクションに上記のコードを追加する必要があります。

xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        document.getElementById("scoreboard").innerHTML=xmlhttp.responseText;
        // add the above code here
    }
}
于 2012-05-22T10:31:12.617 に答える
1

GETをロードするphpの場合、次のように返されると思います。

<php
echo <<<OUTPUT
<div id="soundcheck" class="button blue">
<input type="checkbox" value="Name" id="sound">
This is the checkbox, uncheck it and refresh the page. It should remain unchecked!
</div>
OUTPUT;

代わりに、次を返します。

少しきつくするために、私は次のようにします。

<php
echo <<<OUTPUT
<div id="soundcheck" class="button blue">
<input type="checkbox" value="Name" id="sound">
<label for="sound">This is the checkbox, uncheck it and refresh the page. It should remain unchecked!</label>
</div>
OUTPUT;

これにより、送信内容に関係なく、常に空白のチェックボックスが返されます。

チェックボックスをオフにしない限り、チェックを入れたままにすること問題である場合は、次の手順を実行します。

<php
$checked ($_GET['checked'] == 1 ) ? 'checked="checked" : '';
echo <<<OUTPUT
<div id="soundcheck" class="button blue">
<input type="checkbox" value="Name" id="sound" $checked>
<label for="sound">This is the checkbox, uncheck it and refresh the page. It should remain unchecked!</label>
</div>
OUTPUT;

あなたのjsに次のように:

xmlhttp.open("GET","test.php?q="+str+"&checked=1",true);
于 2012-05-22T10:59:41.190 に答える