我一直在寻找,但无济于事。
从长篇来看,我正在使用javascript进行检查,并使用属性“onchange”来完成它们。最近,我发现在IE上,应该使用“onpropertychange”属性,因为“onchange”事件处理不正确。
所以现在,我有这种字段(并非所有字段都有onKeyDown或onKeyUp事件):
<textarea name="shdescription" rows="1" cols="75" onKeyDown="textCounter(this,'shdesccounter',65)"
onKeyUp="textCounter(this,'shdesccounter',65)" onchange="checkFormValue();" onpropertychange="checkFormValue();"></textarea>
现在每次我对一个字段进行更改,然后需要几秒钟才能进行更改并进行检查。 (以及在我描述的textarea上进行更改时的更多内容。)
启动IE F12调试器,我注意到很多“SCRIPT28:堆栈空间不足”和“SCRIPT2343:堆栈溢出在行:”被触发。在逐步执行脚本之后,我注意到脚本在两个不同的对PHP脚本的ajax调用之间循环。我不确定我们实际上可以谈论递归,因为我没有看到这两个函数之间有任何直接联系。
所以我只能考虑两种可能性:要么在字段中触发更改,再次触发ajax调用,要么我的ajax调用出错了。
我应该在哪里解决我的问题?如果需要更多信息,请不要犹豫。
PS:我对FF / Chrome / Opera没有任何问题。
答案 0 :(得分:4)
我敢打赌其中一个函数checkFormValue()
或textCounter()
正在修改文本框,导致另一个事件被触发,然后无休止地循环。
尝试使用onBlur。