JQueryMobile最終リリースとjquery.mobile.datebox.jsプラグインを使用しています。 pageshowイベントでは、一連のフィールドを動的に追加しています。これらのうちのいくつかは、dateboxプラグインを使用する日付/時刻フィールドです。特に小さなデバイスやiPhoneを除いてすべてうまく動作します(デスクトップブラウザでは、特に狭くするとこの問題が発生します)。ヘルパーがポップアップする日付または時間のアイコンをクリックすると、日付/時刻を選択することができ、それはフィールドに入りますが、フィールドはその中の他のものと共に複製されます。ダイナミックフィールドを持つjQueryMobileとdateboxプラグイン
ページショーコードの例を示します。フォームに追加する必要があるフィールドを定義したjsonデータを取得するためにWebサービスを呼び出します。フィールドには、日付、ラジオ、またはテキストを指定できます。それはすべてのポップアップの後、日付/時刻フィールドの再描画を除いて正常に動作します:私はこの問題を推測している
$('#editthing').live('pageshow', function (e, info) {
var listurl = "/editthingattribute";
//Add a cache 'buster' parameter
var date = new Date();
listurl = listurl + '?p_uid=' + date.getTime();
$.ajax({
url: listurl + "&p_id=" + getUrlVar("p_id") + "&p_thingattribute=" + getUrlVar("p_thingattribute"),
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function (data) {
var form = $("#formcontent");
form.html = "";
//Add the fields defined in the results from the database call
$.each(data.editthingfields, function (index, item) {
//Set the global field type
fieldType = item.fieldType;
if (item.fieldtype == 'date') {
inputType = 'date';
//This messes up on narrow browsers
form.append('<div data-role="fieldcontain">' + '<label for="' + item.fieldname + '_date">' + item.fieldlabel + ' (Date)</label>' + '<input name="' + item.fieldname + '_date" id="' + item.fieldname + '_date" ' + 'type="date" data-role="datebox" data-options=\'{"mode": "calbox", "dateFormat":"dd/mm/YYYY"}\' ' + 'value="' + item.fieldvalue.substring(0, 10) + '" />' + '</div>' + '<div data-role="fieldcontain">' + '<label for="' + item.fieldname + '_time">' + item.fieldlabel + ' (Time)</label>' + '<input name="' + item.fieldname + '_time" id="' + item.fieldname + '_time" ' + 'type="date" data-role="datebox" data-options=\'{"mode": "timebox"}\' ' + 'value="' + item.fieldvalue.substring(11, 17) + '" />' + '</div>');
} else if (item.fieldtype == 'radio') {
inputType = 'radio';
//Add a suitable set of radio buttons for the attribute being edited.
form.append('<div data-role="fieldcontain">' + '<fieldset data-role="controlgroup">' + '<legend>' + item.fieldlabel + '</legend>');
var optionsarray = item.fieldoptions.split(',');
for (var i = 0; i < optionsarray.length; i++) {
if (item.fieldvalue == optionsarray[i]) {
form.append('<input name="' + item.fieldname + '" id="' + optionsarray[i] + '" ' + 'type="' + item.fieldtype + '" value="' + optionsarray[i] + '" checked="checked" />');
} else {
form.append('<input name="' + item.fieldname + '" id="' + optionsarray[i] + '" ' + 'type="' + item.fieldtype + '" value="' + optionsarray[i] + '" />');
}
form.append('<label for="' + optionsarray[i] + '">' + optionsarray[i] + '</label>');
}
form.append('</fieldset>' + '</div>');
} else {
inputType = 'text';
form.append('<div data-role="fieldcontain">' + '<label for="' + item.fieldname + '">' + item.fieldlabel + '</label>' + '<input name="' + item.fieldname + '" id="' + item.fieldname + '" ' + 'type="' + item.fieldtype + '" value="' + item.fieldvalue + '" />' + '</div>');
}
});
var thinghdr = $("#thingheader");
thinghdr.html = "";
$(data.thingdetails).each(function (index) {
thinghdr.append("<h3>" + this.thingoper + " " + this.thingnumber + " " + this.thingdesc + "</h3>");
});
$("#editthing").page("destroy").page();
}
});
});
フィールドを動的に追加されているためですが、私はそれラウンドを取得する方法がわかりません。事前 で
おかげでマイク