3

テーブル内のいくつかの検索用語の検索頻度を示す Web ページを作成しています。そのテーブルの上には、個別の検索結果を表示するか、すべての結果を表示するかをユーザーが選択できる 2 つのラジオ ボタンがあります。

この JavaScript を使用する場合:

$(function() {
    $('.distinct_radio').change(function() {
        console.log("submit distinct_radio");
        this.form.submit();
    });
});

それは正常に動作します。テーブルの値を正しく切り替えて、何度も切り替えることができます。ただし、このjavascriptを使用すると:

$(function() {
    $('.distinct_radio').change(function() {
        console.log("submit distinct_radio");
        $('form#searchTermForm').submit();
    });
});

フォームは次のように定義されます。

<form id="searchTermForm" action="/searchterms.php" method="POST">
    <div class="configDiv"> 
        <input name="distinct" id="radio-choice-v-2a" class="distinct_radio" value="false" <?php if (strcmp($distinct, "false") == 0) {echo "checked=\"checked\"";}?> type="radio">
        <label for="radio-choice-v-2a">Show total number of searches.</label>
        <input name="distinct" id="radio-choice-v-2b" class="distinct_radio" value="true" <?php if (strcmp($distinct, "true") == 0) {echo "checked=\"checked\"";}?> type="radio">
        <label for="radio-choice-v-2b">Show number of different people</label>
    </div>
</form>

関連するいくつかのphp:

<?php
    if(isset($_POST['distinct'])){
        $distinct   =   $_POST['distinct'];
    } else {
        $distinct   =   "false";
    }
?>

私が使用しているJavascript:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="js/custom.js"></script>
<script type="text/javascript" src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>

これを jquery mobile 1.3.1 に更新しても問題は解決しません。

ラジオボタンを初めてクリックすると正常に動作します。その後、まったく反応がありません。ページを手動で更新すると、もう一度機能します。

最初のスクリプトでは、「submit distinct_radio」というメッセージがコンソールに出力され、送信自体によってコンソールがクリアされます。

2 番目のスクリプトでは、「submit distinct_radio」というメッセージがコンソールに出力されますが、コンソールはクリアされません。そのメッセージと、実行中の POST 要求が出力されます。ただし、POST 要求は実際に実行され、Web ページは正しく更新されます。もう一度クリックしても、コンソールにメッセージが出力されたり、要求が実行されたりすることはありません。

2 番目のスクリプトで、"action" の後のパスを存在しないパスに変更すると、クリックするたびにコンソール メッセージが出力され、存在しない場所への POST 要求を新たに試行します。

FireFox、Chrome、および Opera でこの問題に直面しています。

好奇心の次に、これを使用して、ユーザーがテーブル ヘッダーをクリックして並べ替えたときにフォームを送信したいと考えています。そこから、「this.form.submit();」を使用できません。

この動作はどのように説明できますか?

編集:

@peddle に感謝します (以下の回答を参照): Jquery Mobile に問題があるようです。jquery.mobile-1.3.0.min.js への参照を削除すると、何度も何度も機能します (したがって、非常に醜い)。Javascript の参照はhttp://jquerymobile.com/blog/2013/04/10/announce-jquery-mobile-1-3-1/で提案されているように、jqm 1.3.1 と jquery 1.9.1 が連携することを意図しています。

4

1 に答える 1