我在标记中定义了以下 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 体验。为什么它不运行?请。