【问题标题】:Using javascript to calculate price in asp.net在asp.net中使用javascript计算价格
【发布时间】:2015-10-07 14:16:30
【问题描述】:

我在 gridview 中使用文本框,想通过文本框中的 js 计算值,我的代码没有显示任何错误。我想将数量乘以费率并获得总价。

function totalise(price, rate, qt) {
    var qty = window.document.getElementById(qt).value;
    var rate = window.document.getElementById(rate).value;
    var price = rate;
    price.value = rate * qty;
}

<asp:TextBox ID="txtStonePrice" runat="server" onblur=" totalise(this)" ></asp:TextBox>

【问题讨论】:

  • 至少你应该展示一些导致问题的代码。这里没有读心者,所以没有人能猜到你身边出了什么问题。
  • 请不要将您的代码发布为 cmets,因为以这种方式发布时它完全不可读。使用问题下方的edit 链接进行编辑。
  • 请更新您的总计功能。您的 onblur 事件处理程序中有一个函数参数,但函数定义中有 3 个参数。另外两个显然没有定义

标签: javascript html asp.net gridview onblur


【解决方案1】:

首先,您实际上并没有将rateqt 传递给您的总计函数,因此您无法查找它们。

其次,尝试对这些(rate.valueqty)值使用 parseFloat 或 parseInt,否则它们将是字符串。

第三,rate 已经等于 ID==rate 元素的值,所以在你解决了我提到的其他 2 件事之后,你会想要这样的东西:

(请注意,我忽略了一些不好的命名约定。另外,您可能应该进行一些错误检查,以确保您确实获得了您通过 Id 查找的元素)

function totalise(price, rate, qt) {
    var qty = window.document.getElementById(qt).value;
    var rate = window.document.getElementById(rate);
    var price = rate;
    price.value = parseFloat(rate.value) * parseFloat(qty);
}

【讨论】:

  • 他的事件处理程序既不是通过率也不是qt。如果你 parseFloat(rate.value),你会得到 NaN。仍然..不会出现错误。
  • @achan 啊哈,哇。我没有意识到他发布了他的事件处理程序。我已经训练自己忽略 asp,哈哈。
【解决方案2】:

嗯,我发现这里有几个问题。

首先,您从onblur 事件处理程序调用您的函数为totalise(this),这意味着您没有传递任何作为rateqt 参数,因此不可能获取适当的元素并检索他们的价值观。

其次,这个分配:var price = rate; 看起来是多余的。您正在从您传递给某个浮点值的控件中覆盖 price 的值,因此稍后此调用 price.value = rate * qty 将无效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 2018-12-13
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多