2012-05-09 10 views
0

「ドロップした」ドラッグ&ドロップカレンダーは、詳細を変数に渡す必要があります。jQueryループでそれぞれの「ドロップ」のための隠しフィールドを生成する

これまでのところ、テキストエリアに追加してデータを記録しているか、最後のドロップを取る隠しフィールドを1つ作成することができました。

しかし、私は各項目を隠しフィールドに入れる必要があるので、次のページに渡してPHPで処理します。

私はいくつかの種類のループが必要なことを推測しているので、各ドロップごとに... hiddenフィールドを生成します。

しかし、私はそれが動作するように運がないです。

ここに私のコードです。どんな助けでも本当に便利です。

おかげで何ができるか

drop: function(date, allDay) { // this function is called when something is dropped 

      // retrieve the dropped element's stored Event Object 
      var originalEventObject = $(this).data('eventObject'); 

      // we need to copy it, so that multiple events don't have a reference to the same object 
      var copiedEventObject = $.extend({}, originalEventObject); 

      // assign it the date that was reported 
      copiedEventObject.start = date; 
      copiedEventObject.allDay = allDay; 

      // render the event on the calendar 
      // the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/) 
      $('#calendar').fullCalendar('renderEvent', copiedEventObject, true); 


      //Record and add dropped items to list 
      var txt = $("#listbox"); 
      var dtstart = copiedEventObject.start + '\n' 
      var caltitle = copiedEventObject.title 

      txt.val(txt.val() + dtstart); // For our reference - Remove later 

       var input = document.createElement("input"); 
       input.setAttribute("type", "hidden"); 
       input.setAttribute("name", "dtstart"); 
       input.setAttribute("value", dtstart); 

       //append to form element that you want . 
       document.getElementById("calendarform").appendChild(input) 

      // remove the element from the "Draggable Events" list 
      $(this).remove(); 

     } 
    }); 


}); 
+1

'document.createElement()'? 'setAttribute()'を使って値を設定しますか?あなたはjQueryを使用していますので、このようなことから離れましょう。それ以外に、ネイティブJSを使用して値を設定する適切な方法は、 'input.value = ...;' – ThiefMaster

+0

ありがとうございます。私は今それを更新しました。 –

答えて

1

<ul id = "listbox"> 

</ul> 

が、あなたの関数に以下のjQueryを追加し、以下のように "UL" の要素をリストボックスを作成することです

var txt = $('#listbox');  
txt.append("<li class ='listItem'> "+dtstart +"</li>") 

最後に< .li>のリストが表示されます(そうでなければ、答えに表示されません)要素を同じクラスで使用します。そして、あなたは「listItemのを」クラスのすべての要素を取得し、

希望この答えが「listItemの内のすべての値を取得するには、clear

EDIT

であなたの次のページに値を渡すことができます'クラスは次のことを行うことができます

var listItems = $('.listItem'); 

listItems.each(function(){ 
    // your code goes here for each record 
}); 
+0

ありがとう!それは理にかなっている。どのようにそのクラスからすべてのアイテムを取得するのですか?それでもループする必要はありますか? –

+0

質問を編集する – Jayanga

+0

OK、その部分がうまくいきました。しかし、それはまだ最新の変数を取っています。毎回別の名前の隠しフィールドを作成する方法が必要ですか? –

関連する問題