更改文本框格式时,Javascript 代码不会运行
本文关键字:代码 Javascript 运行 文本 格式 | 更新日期: 2023-09-27 18:30:32
嗨,我正在使用下面的java脚本代码在asp网格视图中进行一些计算
如果我在网格视图中更改文本框格式,代码将无法运行
例如
<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>
将ClientIDMode="Static"
添加到文本框中。 ASP.NET 将在呈现页面时更改 ID,除非您将 ClientIDMode 设置为"静态"。
您是否尝试过在键控功能中放置debugger;
行?它可能正在上线,但函数中的代码未正常运行。
[id*=GvProducts]
这不包括在您提供的 HTML 中。我真的无法判断这是否会影响 CSS 选择器查找文本框控件。
<ItemTemplate>
假设这是来自中继器...在这种情况下,最好使用$("input.form-control")
来查找控件。ASP.NET 将做一大堆事情来唯一化 ID,当它位于中继器中时。
选项 1:
改变:
$("[id*=GvProducts]input[type=text][id*=txtCalc]").on('keyup', (function (e) {
自
$("[id$=txtCalcCommision]").on('keyup', (function (e) {
由于 id 是唯一的,因此一个简单的结尾 with 选择器就可以完成这项工作。
选项 2 :
由于您没有使用@Nick提到的ClientIDMode="Static"
,因此您需要获取服务器生成的 id 作为选择器 ID。
$("<%=txtCalcCommision.ClientID%>").on('keyup', (function (e) {
选项 3 :
将ClientIDMode="Static"
添加到 asp.net 控件:
<asp:TextBox ID="txtCalcCommision"
ClientIDMode="Static" TextMode="Number" placeholder="Eenter Commision" runat="server" CssClass="form-control" ></asp:TextBox>
$("#txtCalcCommision").on('keyup', (function (e) {