当我单步执行tap事件代码时,我看到了我期望的确切行为,将ddlValues设置为正确选择的选项)但是在我的代码之后运行事件冒泡代码之后,所选选项被设置回第一个选项每次。 以下是页面中的所有代码,只显示相关内容,因为我检查过没有其他代码正在运行,因为事件被触发了。
此选择控件位于两页页面jquery移动样式的第2页上。 在点击事件,最后一个事件中,记下changepage方法,然后我开始我的设置被覆盖。
找不到足够晚运行的事件来重置值,因为这样可以解决它,因为我有我想在全局hdn控件中设置的值。
<script>
$(document).ready(function () {
function GetPricing(cardid) {
var prices = $('#ddlValues');
var cardp = {};
cardp.cardid = cardid;
var datax = JSON.stringify(cardp);
$.ajax({
type: "POST",
url: "cardedit.aspx/GetPricing",
data: datax,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
prices.empty();
$.each(response.d, function (index, item) {
prices.append(new Option(item.Name, item.ID));
});
prices.selectmenu("refresh");
},
error: function () {
alert("Failed to load data");
}
});
}
function GetDetail(id) {
var cardd = {};
cardd.id = id;
var datax = JSON.stringify(cardd);
$.ajax({
type: "POST",
url: "cardedit.aspx/GetDetail",
data: datax,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
var vals = response.d;
$('#txtNumber').val(vals[0]);
$('#txtPrice').val(vals[1]);
$('#txtTrade').val(vals[2]);
$('#txtSell').val(vals[3]);
$('#txtWholesale').val(vals[4]);
},
error: function () {
alert("Failed to load data");
}
});
}
function GetDetailx(id) {
var cardd = {};
cardd.id = id;
var datax = JSON.stringify(cardd);
$.ajax({
type: "POST",
url: "cardedit.aspx/GetDetailx",
data: datax,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
var vals = response.d;
$('#txtPrice').val(vals[0]);
$('#txtTrade').val(vals[1]);
$('#txtSell').val(vals[2]);
$('#txtWholesale').val(vals[3]);
},
error: function () {
alert("Failed to load data");
}
});
}
$('#ddlCards').change(function () {
var cardid = $(this).attr('value');
GetPricing(cardid);
});
$('#ddlValues').change(function () {
var priceid = $(this).attr('value');
$('#hdnPriceid').val(priceid)
GetDetailx(priceid);
});
$('.cardxx').on('tap', function () {
var x = $(this);
var id = x.data("id");
$('#hdnCardid').val(id);
var cardid = x.data("cardid");
var priceid = x.data("priceid");
$('#hdnPriceid').val(priceid);
var pagex = $('#page2');
$.mobile.changePage(pagex);
var cards = $('#ddlCards');
cards.val(cardid);
cards.selectmenu("refresh");
GetPricing(cardid);
GetDetail(id);
var pricexs = $('#ddlValues');
pricexs.val(priceid);
pricexs.selectmenu("refresh", true);
event.stopPropagation();
});
});
</script>
运行我的代码后,我看到jquery和jquerymobile代码正在运行,但是不明白为什么它会将ddlValues重置为第一个选项。
如果我推迟设置选择选项四分之一秒,问题就解决了,但那样 看起来太粗糙了。