jquerymobile动态选择选项以错误的选定值结束

时间:2012-12-22 19:40:36

标签: jquery jquery-mobile

当我单步执行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重置为第一个选项。

如果我推迟设置选择选项四分之一秒,问题就解决了,但那样 看起来太粗糙了。

0 个答案:

没有答案