2016-01-15 79 views
0

嗨,我使用下面的Java腳本代碼,以使在ASP網格視圖中的某些計算時不會運行JavaScript代碼改變文本框格式

,如果我在網格視圖改變文本框格式的代碼不會運行

例如

<ItemTemplate> 
<asp:TextBox ID="txtCalcCommision" TextMode="Number" placeholder="Eenter Commision" runat="server" CssClass="form-control" ></asp:TextBox> 
</ItemTemplate> 
</asp:TemplateField> 
大於代碼其他

運行完全

JavaScript代碼

<script type="text/javascript"> 

    $(document).ready(function() { 

     $("[id*=GvProducts]input[type=text][id*=txtCalc]").on('keyup', (function (e) { 

      var Costprice = $(this).closest('tr').find("input[type=text][id*=txtCalcCostPrice]").val(); 
      var quantity = $(e.target).closest('tr').find("input[type=text][id*=txtCalcQuantity]").val(); 
      var Commision = $(this).closest('tr').find("input[type=text][id*=txtCalcCommision]").val(); 
      var getunitprice = (parseFloat(Commision/100 * Costprice)) + parseFloat(Costprice); 
      var total = getunitprice * quantity; 
      $(e.target).closest('tr').find("[id*=lblunitprice]").text(getunitprice); 
      $(e.target).closest('tr').find("[id*=lblTotal]").text(total); 
      GrossTotal(); 
     })); 

    }); 

    var gross; 

    function GrossTotal() { 

     gross = 0; 

     $("[id*=GvProducts][id*=lblTotal]").each(function (index, item) { 
      gross = gross + parseInt($(item).text()); 
     }); 
     $("[id*=lblGrandTotal]").text(gross); 
    } 
</script> 
+0

哪些部分不工作? 'keyup'? – DinoMyte

+1

@tnw:他的標記是asp.net html – DinoMyte

+0

是安全技術不起作用 – Ayman

回答

0

ClientIDMode="Static"添加到文本框中。除非將ClientIDMode設置爲「Static」,否則ASP.NET將在頁面呈現時更改ID。

你也試過把debugger;行放在keyup函數中嗎?它可能正在打線,但函數中的代碼運行不正常。

[id*=GvProducts]這不包含在您提供的HTML中。我無法確定是否影響CSS選擇器查找您的文本框控件。

<ItemTemplate>假設這是來自中繼器......在這種情況下,您最好使用$("input.form-control")來找到您的控制權。 ASP.NET會在中繼器內部完成一系列的事情來識別ID。

+0

你提到的有關ClientIDMode =「Static」的內容是真實的。然而,他正在使用jquery包含選擇器,這將意味着id像'%txtCalc%' – DinoMyte

+0

是的,我注意到,但它是在一箇中繼器。我認爲整個身份證將會丟失並轉換別的東西。我將檢查我的應用程序中發生的事情,以便在中繼器中使用ID。對於GVProducts,你肯定是對的,因爲我們無法在HTML中看到這一點。 –

+0

嗨我試圖添加ClientIDMode =「靜態」仍然有問題 – Ayman

0

選項1:

變化:

$("[id*=GvProducts]input[type=text][id*=txtCalc]").on('keyup', (function (e) { 

$("[id$=txtCalcCommision]").on('keyup', (function (e) { 

由於ID是唯一的,與選擇一個簡單的兩端會做這項工作。

選項2:

既然你通過@Nick提到不使用ClientIDMode="Static",你需要讓服務器生成ID作爲選擇ID。

$("<%=txtCalcCommision.ClientID%>").on('keyup', (function (e) {

方案3:

添加ClientIDMode="Static"到asp.net控制:

<asp:TextBox ID="txtCalcCommision"的ClientIDMode = 「靜態」 TextMode="Number" placeholder="Eenter Commision" runat="server" CssClass="form-control" ></asp:TextBox>

$("#txtCalcCommision").on('keyup', (function (e) { 
+0

嗨嘗試都選項1和2沒有工作,我已經注意到在Java腳本代碼輸入[type = text]也許如果更改類型爲數字將工作 – Ayman

+0

確保ID是唯一的 – DinoMyte

+0

他們是唯一的問題是當我刪除TextMode =「Number」代碼工作 – Ayman