0

我在标记中定义了以下 asp.net 文本框:

<div class="OptionSelect2">
    <asp:TextBox ID="txtCalculateWeightRollSize" CssClass="_100" runat="server"></asp:TextBox>
</div>

在代码隐藏中,在 Page_Load 上,我绑定了 onblur 事件:

txtCalculateWeightRollSize.Attributes.Add("onblur", "Javascript:RollBWghtPCutoffNWebsCalcs();")

Javascript(重新格式化以更容易适应问题格式)是这样的:

function RollBWghtPCutoffNWebsCalcs() { ZeroPctLbs(); }
function ZeroPctLbs() {
    //Get the values
    var rollSize = document.getElementById("<% =txtCalculateWeightRollSize.ClientID %>").value.replace("$", "").replace("%", "");
        //Get other controls' values

    //Make them numbers, if necessary
    rollSize = +rollSize;
        //convert other controls

    //Calculate and assign the result
    var result = //math;
    document.getElementById("<% =lblCalculateWeightZeroPercentLbsValue.ClientID %>").innerText = result;
}

这在 IE 和 Chrome 中都没有问题。但是,在 Firefox 中,它失败了。在萤火虫(我直到今天才使用)中,似乎 onblur 事件触发了,但是进入代码时,当它应该调用 RollBWghtPCutoffNWebsCalcs() 时,它会传递它,就好像调用不存在一样。如果我直接在任何 Javascript 函数中放置断点,它永远不会被触发。

文本框似乎在 HTML 中正确呈现:

<input name="ctl00$MainContent$txtCalculateWeightRollSize" type="text" id="MainContent_txtCalculateWeightRollSize" class="_100" onblur="Javascript:RollBWghtPCutoffNWebsCalcs();" />

这是一个 JSFiddle,我相信它显示了这个问题。onblur 在小提琴中的任何浏览器中都不起作用,但这与我过去处理 Firefox 问题的经验一致。直接渲染时它在 Chrome 和 IE 中确实有效,并且 JSHint 指示 Javascript 是有效的。

我怀疑我正在做的事情并不完全标准,因为 Firefox(据我了解)几乎是一种基于标准的 Web 体验。为什么它不运行?请。

4

1 回答 1

0

有时候是很简单的事情...

FireFox 不支持 .innerText。改用innerHTML。

一旦我停止使用 Firebug 并切换到 FF 的内置调试器,我就能够真正跟踪我的代码——我想我只是不知道如何使用 Firebug。让我感到奇怪的是,FF 会使用 innerText 从标签中获取值,并且会以这样的方式编写它们,以便后续函数调用可以读取写入的值,但它不会呈现 innerText。

tldr;

使用 innerHTML 处理 Javascript 中的标签文本。

于 2013-06-05T15:18:02.460 回答