我在我的MVC应用程序中有一个textarea,我正在实现AspNetSpellCheck,调试器告诉我textarea更改为display:none;能见度:隐藏;并且生成一个div,其中id =“abc”和class“=”pqr“.
<input type="hidden" value="" name="userid" id="useid" />
此外,我正在为所有文本区域/其他控件实现更改检测….
var somethingChanged = false; $(document).ready(function() { $('input').change(function() { somethingChanged = true; }); });
因为文本区域变得隐藏,我想它不会自动触发change()事件.在上述案例中解决事件的解决方案是什么?谢谢!
编辑
使用AspNetSpellCheck,下面是我的代码,
@{ ASPNetSpell.Razor.SpellAsYouType mySpell = new ASPNetSpell.Razor.SpellAsYouType(); mySpell.InstallationPath = ("/Content/ASPNetSpellInclude"); mySpell.FieldsToSpellCheck = "TextArea1"; } <textarea id="TextArea1" cols="20" rows="2">bedddly</textarea> @Html.Raw(mySpell.getHtml()) <script type="text/javascript" language="javascript"> $(document).ready(function () { $('input[type="hidden"]').change(function () { debugger; alert('hi'); // somethingChanged = true; }); }); </script>
<div tabIndex="null" class="livespell_textarea" id="TextArea1___livespell_proxy"> <textarea id="TextArea1" style="display: none; visibility: hidden;" rows="2" cols="20">
解决方法
如果您不知道在textarea中何时更改了值,则可以使用setInterval来监视更改
例如
objTextBox = document.getElementById("TextArea1"); oldValue = objTextBox.value; var somethingChanged = false; function track_change() { if(objTextBox.value != oldValue) { oldValue = objTextBox.value; somethingChanged = true; alert("something has Changed ") }); } } setInterval(function() { track_change()},100);