2

私は自分の街でペット宿泊ビジネスのオンライン予約システムを構築していますが、この特定の機能を効率的に実行する方法について壁にぶつかりました。

ユーザープロセスの簡単な要点...

  1. いくつかの予備情報が提供されます (クライアント情報、ペット情報など)。
  2. ユーザーは 2 つの日付を選択します。チェックイン日とチェックアウト日。
  3. プログラムは、クライアントが滞在している日数を計算し、毎日がクラス「Day」のコンストラクターにスローされます。... ブロックが日ごとに生成され、ユーザーに表示されます。また、すべての Day オブジェクトが配列に格納され、この配列がママ クラス "ReservationData" に含まれていることにも注意してください。これは、Day-array の他に、予約自体に関連するメタデータも保持します。

とにかく、私の問題は、「dayBlocks」がリストされてユーザーに表示されると、ユーザーはその特定の日にペットに必要な個々の「エクストラ」を確認できる必要があることです.

そこで、{ReservationData} <--(次の配列を持つ)-- {Days} <--(次の配列を持つ)-- {Extras} となるように分割しました。14 の追加サービスから選択できるため、表示される日ごとに、チェックボックスとラベルの簡単なリストがあります。

理想的には、ユーザーがチェックボックスをオンにすると、reservationDataDaysExtraDeepArray 内の対応する変数を直接 & すぐに変更するように設定したいと考えています。私の中の C プログラマーは、各チェックボックスにポインターを関連付けたいと考えていますが、(少なくとも私が思うに) jQuery では実行できないと確信しています。

かなり明確に説明したと思いますが、コードの一部を次に示します。

//Day Object/Class
function day(_date, _daynum) {
    this.date = new Date(_date);
    this.dayNum = _daynum;
    this.dayExtras = {
        'YH': false,  //<--- How can I directly manipulate
        'PP': false,  //<--- all of these guys via user-control
        'EE': false,  //<--- of corresponding/assigned 
        'ST': false,  //<--- checkboxes?
        'PT': false,
        'TT15': false,
        'TT30': false,
        'TT45': false,
        'DC': false   //--- Or can I? :/        
    };

    console.log("Day object created with date of " + day.date + " and day-number of " + day.dayNum + ".");

    this.getDayNum = function() { return this.dayNum; }
    this.getDayDate = function() { return this.date; }
}

これはこのサイトでの最初の質問ですが、たくさん検索しましたが、まだ迷っています...みんなありがとう!

4

2 に答える 2

0

チェックボックスの名前が dayExtras オブジェクトのキーに対応していると仮定すると、次のようになります..

//Day Object/Class
function day(_date, _daynum) {
    this.date = new Date(_date);
    this.dayNum = _daynum;
    this.dayExtras = {
        'YH': false,  //<--- How can I directly manipulate
        'PP': false,  //<--- all of these guys via user-control
        'EE': false,  //<--- of corresponding/assigned 
        'ST': false,  //<--- checkboxes?
        'PT': false,
        'TT15': false,
        'TT30': false,
        'TT45': false,
        'DC': false   //--- Or can I? :/        
    };

    console.log("Day object created with date of " + day.date + " and day-number of "+day.dayNum+".");

    this.getDayNum = function() { return this.dayNum; }
    this.getDayDate = function() { return this.date; }
    this.setDayExtras = function (key,val) {
      if(key in this.dayExtras){
        this.dayExtras[key] = val;
      }
    }
}

var myDay = new day(null,null);

$(document).on('change','#myForm input[type="checkbox"]', function () {
  myDay.setDayExtras(this.name,this.checked);
});
于 2012-12-24T04:07:11.640 に答える
0

うまくいきました。私を正しい方向に向けてくれてありがとう!

function saveExtra(me) {
    var extraName = me.attr('name');
    var extraVal = me.val();
    (reservationData[extraName]).dayExtras[extraVal] = me.prop('checked');
    for (key in reservationData) {
        (reservationData[key]).dump(); //Day data-dump method.
    }
}

this.generateExtrasGrid = function() {
    var fieldName = "day" + this.dayNum + "";
    var exGrid = "";
    exGrid += "<form class='extrasGrid' id='" + this.dayNum + "'>";
    exGrid += "<input type='checkbox' class='extra' name='" + fieldName + "' value='YH' onclick='saveExtra($(this))' />";............
    exGrid += "</form>";
    return exGrid;
}​
于 2012-12-24T04:40:15.890 に答える