1

ドキュメントがラジオ ボタンにロードされたときに、jQuery に onClick 関数をバインドさせようとしています。

ASP はデータベースに戻り、開いているすべてのマーカーを検索し、未加工の HTML を含む応答をページに送信して、ラジオ ボタンとマーカーの画像を作成します。私がする必要があるのは、jQuery (またはそれに関するもの) に onClick をバインドさせて、クリックされたものを知らせることです。これにより、そのmarkerId をデータベースに送り返して、それを人に添付することができます。

これは、私がこれまでに試したことの大まかなjsFiddleです。デバッグでは、各関数にアラートを追加しましたが、本来のように3倍表示されますが、attr('id')未定義に戻ります。

これは、フォームにラジオ ボタンを配置する html です。

            <br />
            <p>Select open marker for new user:
            <% getMarkers(); %>
            </p>

これはその呼び出しのコードビハインドです

        while (reader.Read())
        {
            if (readIndex % 3 == 0)
                markerTable += "<tr>";

            string markerId = reader["marker_id"].ToString();
            string fileName = reader["marker_filename"].ToString();

            markerTable += "<td><input type=\"radio\" name=\"openMarker\" value=\"" + markerId + "\" " +
                "id=\"oMrk" + markerId + "\"><label for=\"oMrk" + markerId + "\"><img src=\"/Markers/" +
                fileName + "\" /></label></input></td>";

            readIndex++;

            if (readIndex % 3 == 0)
                markerTable += "</tr>";

        }

        if (readIndex % 3 != 0)
            markerTable += "</tr>";

        markerTable += "</table>";
    }
    else
        markerTable = "<p>No empty markers. Please delete a user to continue.</p>";
    
    sCon.Close();
    return markerTable;

私が投稿したフィドルには、この関数からソースが貼り付けられています。

2 つの質問があります。

  1. これが機能しないのはなぜですか?jQuery セレクター ステートメントから 3 つの要素を取得して$(document).ready()います。属性が定義されていないのはなぜですか?
  2. これを行うより良い方法はありますか?ページ変数に値を入れてから、ASP ボタンを使用してサーバーに送信し、ストアド プロシージャに送り返して、そのマーカーを別のフィールドからのテキストと共にデータベースに追加することを計画していました。onClick イベントを応答 html に追加できることはわかっていますが、私が行っていることが機能しない理由を理解する必要があります。

私はウェブにかなり慣れていないので、手続き的に的外れである場合は、提案をお待ちしています。

4

3 に答える 3

1

リンク

$(document).ready(function () {
    $('input:radio').each(function (radElem) {
        var radId = $(this).attr('id');
        alert(radId);

    });

     $('input:radio').on('click', function () {
            alert('Clicked');
        });
});
于 2013-03-21T12:49:43.847 に答える
0
$(document).ready(function () {
    $('input:radio').on('click', function() {
        alert($(this).attr('id'));
    });
});

ページに留まっている間に値をサーバーに送信する必要がありますか?(ajax経由)

または、フォームを別のページに投稿する必要がありますか?

于 2013-03-21T12:53:32.617 に答える
0
  1. onClickただではなくバインドしようとしているため、機能しませんclick
  2. 他の回答では、jQuery が提供されています。thiseach では、キーワードを使用するだけです

これをフィドルでテストしましたが、動作します。他の人も同様の回答を提供していますが、とにかくここにフィドルがあります: THE FIDDLE

$(document).ready(function () {
    $("input:radio").each(function () {
        var radId = $(this).attr('id');
        alert(radId);
        $(this).on('click', function () {
            alert('Clicked');
        });
    });
});

あなたが達成しようとしているより良い方法については、申し訳ありませんが、あなたが本当にやろうとしていることをしっかりと把握していません。ただし、最初にasp.netにこれを入力する必要があるように感じますが、ページの制約によりこれが可能にならない場合があります. なんとも言えません。

また、前の回答のいずれかを選択してください。なぜあなたが持っていたものがうまくいかなかったのかを説明したかっただけです。

于 2013-03-21T13:09:13.370 に答える