2010-04-15 33 views
0

我使用幾個JSON調用來渲染數據等等。爲了保持正確的鍵值,我將它存儲在一個標記中。在jQuery(和ASP.NET MVC)中使用隱藏值 - 不工作?

我在我的代碼中有幾個地方有這個,其中沒有一個導致像這樣的問題。這裏是jQuery的:

的稱之爲 「套」 的值:

$("a[id^='planSetupAddNewPlan']").live('click', function() { 
     var x = $(this).attr('id'); 
     x = x.substring(19); 

     $("#hidPlanSetupCurrentGroupKey").val(x); 

     $.getJSON("/GroupSetup/PlanSetupAddNewList", { GroupKey: x }, function(data) { 
      $("#planSetupAddNew").html('' + data.TableResult + ''); 


      alert('First Inside 2 ' + x); 

      $.blockUI({ message: $("#planSetupAddNew") }); 
     }); 
    }); 

說, 「獲得」 價值召喚:

$("#ddlPlanSetupAddNewProduct").live('change', function() { 
      var a = $("#hidPlanSetupCurrentGroupKey").val(); 
      var prod = $(this).val(); 

      alert(a); 

      $.getJSON("/GroupSetup/PlanSetupChangePlanList", { GroupKey: a, Product: prod }, function(data) { 
       if (data.Message == "Success") { 
        $("#planSetupAddNewPlan").html('' + data.TableResult + ''); 
       } else if (data.Message == "Error") { 
        //Do something 
       } 
      }); 
     }); 

這裏是有問題的HTML:

<div id="planSetupAddNew" style="display:none; cursor: default;"> 
    <input type="hidden" id="hidPlanSetupCurrentGroupKey" /> 
    <div id="planSetupAddNewData"> 

    </div> 
</div> 

在第一部分中,alert('First Inside 2'+ x)返回我期望的值(其中x =鍵值),如果我添加一行顯示隱藏字段的內容,也適用於:

ie。

var key = $("#hidPlanSetupCurrentGroupKey").val(); 
alert(key); 

在「警報(a)」中,電話,我得到「未定義」。我在同一視圖中查看了其他代碼,並且它是相同的,並且工作正常。我必須錯過某些東西,或者有某種我沒有發現的錯誤類型。

只是控制器事件的​​概述: 第一個調用(/ GroupSetup/PlanSetupAddNewList)將返回一個構建「表單」的html字符串,供用戶輸入信息。

第二個調用(/ GroupSetup/PlanSetupChangePlanList)僅基於第一個下拉選擇(覆蓋div中的html)更改第二個下拉列表。

如果您需要更多信息,請告訴我!

任何想法/提示/指針/建議?!?!

感謝您的幫助:)

回答

2

爲什麼不使用普通的javascript全局變量? 或者使用jQuery的data

var globalGroupKey = ''; 
$("a[id^='planSetupAddNewPlan']").live('click', function() { 
    var x = $(this).attr('id'); 
    globalGroupKey = x.substring(19); 
    $.getJSON("/GroupSetup/PlanSetupAddNewList", { GroupKey: globalGroupKey }, function(data) { 
     $("#planSetupAddNew").html('' + data.TableResult + ''); 


     alert('First Inside 2 ' + x); 

     $.blockUI({ message: $("#planSetupAddNew") }); 
    }); 
}); 

$("#ddlPlanSetupAddNewProduct").live('change', function() { 
     var prod = $(this).val(); 
     alert(globalGroupKey); 
     $.getJSON("/GroupSetup/PlanSetupChangePlanList", { GroupKey: globalGroupKey, Product: prod }, function(data) { 
      if (data.Message == "Success") { 
       $("#planSetupAddNewPlan").html('' + data.TableResult + ''); 
      } else if (data.Message == "Error") { 
       //Do something 
      } 
     }); 
}); 

無論如何,這在我看來就像change事件click之前發射,所以可能沒什麼的,這將工作。

+0

同意,有點聽起來像你在這裏重新發明輪子 – 2010-04-15 14:17:51

+0

改變事件將永遠不會發生在點擊之前。點擊繪製一個新的「窗口」(blockui - 模式樣式彈出窗口),其中包含change事件的控件。 雖然這工作,感謝全球變量解決方案!這很好! – SlackerCoder 2010-04-15 14:39:52