0

投票などを送信するための Web アプリケーションを作成しています。<div class = "desiredClass">aが存在する場合、リクエストを介してデータベースから投票が取得さajaxれ、html に入れられ、ユーザーが投票に投票できるウィジェット コードをいくつか開発しました。

私のwidget.jsファイルの場合、スクリプトとしてhtmlに埋め込まれます:

$(document).ready(function () {
  if ($('.loadPoll')[0]) {


    var name = $('.loadPoll').data("pollname");
    var IP_Address = '-1';
    $.ajax({
      url: 'http://url.com:3000/loadPoll',
      dataType: 'jsonp',
      data: {
        pollName: name
      },
      success: function (data) {
        poll = data.poll;
        $(".loadPoll").html(data.html);
        $(document).on('click', '#SubmitVote', function () {
          var selectedValue;
          var radios = document.getElementsByTagName('input');
          for (var i = 0; i < radios.length; i++) {
            if (radios[i].type === 'radio' && radios[i].checked) {
              selectedValue = radios[i].value;
            }
          }
          console.log(selectedValue);
          $.getJSON("http://jsonip.appspot.com?callback=?", function (data) {
            var IP_Address = data.ip;

            $.ajax({
              url: 'http://url.com:3000/submitVote',
              dataType: 'jsonp',
              data: {
                pollName: poll.pollName,
                voterID: IP_Address,
                vote: selectedValue
              },
              success: callback("Vote successful")

            });
          });
        });
      }
    });
  })

これは基本的にサーバーにリクエストを送ってhtmlを返し、#SubmitVoteクリックするとラジオボタンの値が投票としてサーバーに送られます。

「JavaScript イベント コールバックを許可」できるようにしたい。擬似コードの例:

Poll.onSubmit(function() {
        console.log('hello world');
    });

どうすればこれを行うことができますか?

4

1 に答える 1

1

そこにあるようにドット表記を使用するにはPoll、JavaScriptで関数を呼び出す必要があります。

function Poll()
{
    var self = this;
    //various things poll's do

    self.onSubmit = function(callback)
    {
        //Submit Code

        if (callback && typeof(callback) === "function") {  
              callback();  
       }  

    }

}

次に、どこかで新しいPollオブジェクトを作成します。

var poll = new Poll();

次に、onSubmit を呼び出して、コールバックを渡すことができます。

poll.onSubmit(function() {
        console.log('hello world');
    });
于 2013-04-24T21:09:13.267 に答える