Передать переменную переменной в диалоговом окне jQuery Mobile

64
9

У меня есть кнопка, которая открывает диалог, содержащий другой файл html. То, что я хотел бы сделать, это передать переменную в диалог. Это то, что у меня есть.

var html = ""; 
var PLAN_ID = '1234';
html += "<div>"
html += '<a href="formFinal.html?Planid=' + PLAN_ID +'" data-rel="dialog" data role="button">Final</a>'
html += "</div>"

Переменная PLAN_ID - это та, которую я хочу нажать на formFinal.html. Я могу заполнить скрытый ввод текста в диалоговом окне с помощью следующего кода.

$(document).on('pageshow', '#FinalPostPage', function(e) {
var page = $(this);
var query = page.data("url").split("?")[1];
var planid = query.split("=")[1];
$("input[name=Title]",this).val(planid);
})

Я могу использовать это, но переменная не заполняется до тех пор, пока не будет загружена страница formFinal.html. Мне нужна переменная, которая будет использоваться во время разработки страницы. Надеюсь, это имеет смысл.

спросил(а) 2021-01-19T15:27:30+03:00 6 месяцев, 2 недели назад
1
Решение
101

Вы можете использовать localStorage для переноса данных с этой страницы на другую страницу.

Когда вы создаете кнопку, добавьте переменную PLAN_ID в качестве data-* в a а также создайте для нее id/class:

var html = ""; 
var PLAN_ID = '1234';
html += "<div>"
html += '<a href="formFinal.html" id="dialog-send" data-planid="' + PLAN_ID + '" data-rel="dialog" data role="button">Final</a>'
html += "</div>"

Напишите событие click для нажатия кнопки:

$(document).on("click", '#dialog-send' ,function(e) {
//prevent default action. we dont want it to redirect. Just yet.
e.preventDefault();
//set item in localStorage.
localStorage["plan_id"] = $(this).data("planid");
//then use changePage to redirect
$.mobile.changePage(this.href, {transition: 'pop', role: 'dialog'});
});

В вашем pageshow случае,

$(document).on('pageshow', '#FinalPostPage', function(e) {
var page = $(this);
//var query = page.data("url").split("?")[1];
//get plan id from localStorage
var planid = localStorage["plan_id"];
$("input[name=Title]",this).val(planid);
});

Надеюсь это поможет.

ответил(а) 2021-01-19T15:27:30+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема