【发布时间】:2012-10-03 08:13:37
【问题描述】:
试图将提交事件(或单击或其他)绑定到 jQuery 移动页面中的元素。我想做的是从 jQuery 页面的表单元素中的输入中获取值,并将其存储在 cookies/localStorage 中。每次我回到这个页面我都想恢复输入字段。
目前我最终使用了这个脚本:
$('.pageClassSelector').live('pageinit', function (e) {
$('.classSelector').submit(function () {
var q = $('.inputClassSelector').val();
// store to localStorage ...
});
// load from localStorage ...
$('.q').val(lastSearchString);
});
这种方法记录在http://jquerymobile.com/test/docs/api/events.html
由于 DOM 中似乎有可能保存相同的页面,所以 ID 选择器并不是很有用。我现在的问题是,每次我导航到此页面时,提交事件都会再次绑定,因此会导致存储不同的(!)值。提交事件似乎被触发了多次,并且使用 last 之前的值更有趣。
我做错了什么吗?任何提示如何在 jquery mobile 中正确执行脚本?
试一试:
我现在将提交事件绑定放置在 pagebeforeshow 事件中,如下所示:
$('#PageId').on('pagebeforeshow', function (e) {
$('.classSelector').on('submit', function () {
var q = $('.q').val();
alert('stored: ' + q);
}
$('.q').val(lastSearchString);
}
但是要存储的值仍然是上次之前的值,当我之前导航页面时。第一次按原样工作。
尝试2:
这就是我现在所拥有的,看起来它可以满足我的需求。我现在选择当前页面并仅选择作为该页面子级的表单。 这是好的做法吗?
$('div:jqmData(id="PageId")').on('pagebeforeshow', function (e) {
$(this).find('#form').on('submit', function () {
var q = $(this).find('#input').val();
localStorage.setItem("key", q);
return true;
});
lastSearchString = localStorage.getItem("key");
$(this).find('#input').val(lastSearchString);
});
【问题讨论】:
标签: javascript jquery jquery-mobile jquery-events