jquerymobile动态选择选项最终选择了错误的值
当我一步一步地浏览tap事件代码时,我看到了我期望的确切行为(将ddlValues设置为正确的selected选项),但是在我的代码之后运行事件冒泡代码之后,每次都将selected选项设置回第一个选项。 这里是页面中所有的代码,只显示了相关的代码,因为我已经检查过没有其他代码正在运行,因为事件被触发 此选择控件位于两页jquery mobile样式的第2页上。 在tap event,last event中,注意changepage方法,在该方法之后,我开始覆盖设置 找不到足够晚运行的事件来重置该值,因为这样可以解决该问题,因为我在全局hdn控件中设置了要设置的值jquerymobile动态选择选项最终选择了错误的值,jquery,jquery-mobile,Jquery,Jquery Mobile,当我一步一步地浏览tap事件代码时,我看到了我期望的确切行为(将ddlValues设置为正确的selected选项),但是在我的代码之后运行事件冒泡代码之后,每次都将selected选项设置回第一个选项。 这里是页面中所有的代码,只显示了相关的代码,因为我已经检查过没有其他代码正在运行,因为事件被触发 此选择控件位于两页jquery mobile样式的第2页上。 在tap event,last event中,注意changepage方法,在该方法之后,我开始覆盖设置 找不到足够晚运行的事件来重置
<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>
$(文档).ready(函数(){
函数GetPricing(cardid){
风险价值价格=$(“#价值”);
var cardp={};
cardp.cardd=cardd;
var datax=JSON.stringify(cardp);
$.ajax({
类型:“POST”,
url:“cardedit.aspx/GetPricing”,
数据:datax,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(响应){
价格。空();
$.each(response.d,函数(索引,项){
append(新选项(item.Name,item.ID));
});
价格。选择菜单(“刷新”);
},
错误:函数(){
警报(“加载数据失败”);
}
});
}
函数GetDetail(id){
var cardd={};
cardd.id=id;
var datax=JSON.stringify(cardd);
$.ajax({
类型:“POST”,
url:“cardedit.aspx/GetDetail”,
数据:datax,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(响应){
var VAL=响应。d;
$('#txtNumber').val(val[0]);
$('#txtPrice').val(val[1]);
$('#txtrade').val(val[2]);
$('#txtSell').val(val[3]);
$('#txt').val(val[4]);
},
错误:函数(){
警报(“加载数据失败”);
}
});
}
函数GetDetailx(id){
var cardd={};
cardd.id=id;
var datax=JSON.stringify(cardd);
$.ajax({
类型:“POST”,
url:“cardedit.aspx/GetDetailx”,
数据:datax,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(响应){
var VAL=响应。d;
$('#txtPrice').val(val[0]);
$('#txtrade').val(val[1]);
$('#txtSell').val(val[2]);
$('#txt').val(val[3]);
},
错误:函数(){
警报(“加载数据失败”);
}
});
}
$('#ddlCards')。更改(函数(){
var cardid=$(this.attr('value');
GetPricing(cardid);
});
$('#ddlValues')。更改(函数(){
var priceid=$(this.attr('value');
$('hdnPriceid').val(priceid)
GetDetailx(priceid);
});
$('.cardxx')。打开('tap',函数(){
var x=$(此);
var id=x.数据(“id”);
$('hdnCardid').val(id);
var cardid=x.data(“cardid”);
var priceid=x.data(“priceid”);
$('hdnPriceid').val(priceid);
变量pagex=$(“#page2”);
$.mobile.changePage(pagex);
var卡=$(“#ddlCards”);
卡.瓦尔(卡迪德);
卡片。选择菜单(“刷新”);
GetPricing(cardid);
获取详细信息(id);
var pricexs=$('#ddlValues');
pricexs.val(priceid);
pricexs.选择菜单(“刷新”,true);
event.stopPropagation();
});
});
在我的代码运行之后,我看到jquery和jquerymobile代码正在运行,但对它的理解还不够,无法理解为什么要将DDL值重置回第一个选项
如果我将set-select选项延迟四分之一秒,问题就解决了,但是
看起来太粗鲁了