我在标记中定义了以下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中,它失败了。在firebug(我直到今天才使用)中,似乎onblur事件触发,但是当它应该调用RollBWghtPCutoffNWebsCalcs()时,它会进入代码,它会像调用不存在那样传递它。如果我将断点直接放在任何Javascript函数中,它就永远不会被触发。
文本框似乎在HTML中正确呈现:
<input name="ctl00$MainContent$txtCalculateWeightRollSize" type="text" id="MainContent_txtCalculateWeightRollSize" class="_100" onblur="Javascript:RollBWghtPCutoffNWebsCalcs();" />
我认为Here is a JSFiddle显示了这个问题。 onblur在小提琴中的任何浏览器中都不起作用,但这与我过去对Firefox问题的经验一致。它直接渲染时在Chrome和IE中有效,JSHint表示Javascript有效。
我怀疑我正在做的事情并不完全是标准的,因为Firefox(根据我的理解)几乎是一种基于标准的网络体验。为什么不运行?请。
答案 0 :(得分:0)
有时这是简单的事情......
FireFox不支持.innerText。请改用innerHTML。
一旦我停止使用Firebug并切换到FF的内置调试器,我就能够实际跟踪我的代码 - 我想我只是不知道如何使用Firebug。让我失望的奇怪之处在于FF会使用innerText从标签中获取值,并且会以后续函数调用可以读取写入值的方式编写它们,但它不会渲染innerText。
<强> tldr; 强>
使用innerHTML在Javascript中使用标签文本。