2013-08-04 2 views
1

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

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 это кажется. Мне нужна переменная, которая будет использоваться во время разработки страницы. Надеюсь, это имеет смысл.

ответ

3

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

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

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);  
}); 

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

+0

Хорошо. Мне очень нравится, как это происходит. Никогда ранее не использовалось местное хранилище. Я немного новичок в jQuery Mobile. Итак ... как я могу назвать переменную localStorage? Я вижу, что вход «title» не показывает значение моего эмулятора Ripple. Что-то пропущено. Я показывал это раньше. –

+1

Вы можете использовать локальное хранилище так же, как и я. Это так, как вы его называете. Что касается ценности локального хранилища, вы можете проверить в нем вкладку ресурсов хромированных колес. Вы запустите приложение. Если он работает на хроме, он будет работать на вашем эмуляторе. – krishgopinath

+0

Спасибо! Сейчас работает как шарм! –

Смежные вопросы