输入键以在asp.net多行文本框控件中插入换行符
我有一些继承的C / asp.net代码,其中有一个文本框,我想将其做成多行。我这样做是通过添加textmode =" multiline"来实现的,但是当我尝试插入换行符时,回车键将提交表单:P
我四处搜寻,似乎默认行为应该是输入(或者控制输入)插入换行符。就像我说的那样,我继承了代码,所以我不确定是否有JavaScript在胡闹,或者我只是要做一个简单的asp.net。
解决方案
回答
我怀疑它是(如我们所说的)一些自定义javascript代码。
原始的asp.net控件工作正常...我们将需要检查代码
回答
我们是否正在处理文本框的textchanged事件?这意味着ASP.Net将文本框设置为引起回退(提交页面)的任何可能导致文本框失去焦点的事情,包括回车键。
回答
我创建了一个带有TextBox和Button的示例页面,它对我来说很好用:
<asp:TextBox runat="server" ID="textbox1" TextMode="MultiLine" /> <br /> <br /> <asp:Button runat="server" ID="button1" Text="Button 1" onclick="button1_Click" />
因此,它很可能取决于我们设置的其他属性或者表单上的其他控件。
编辑:TextChanged事件仅在TextBox失去焦点时才触发,因此不会成为问题。
回答
I can't find that "WebForm_FireDefaultButton" javascript anywhere, is it something asp.net is generating?
是的。
生成该代码是为了支持包含控件的窗体和/或者面板的DefaultButton功能。这是它的来源:
function WebForm_FireDefaultButton(event, target) { if (event.keyCode == 13) { var src = event.srcElement || event.target; if (!src || (src.tagName.toLowerCase() != "textarea")) { var defaultButton; if (__nonMSDOMBrowser) { defaultButton = document.getElementById(target); } else { defaultButton = document.all[target]; } if (defaultButton && typeof (defaultButton.click) != "undefined") { defaultButton.click(); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return false; } } } return true; }
回答
@ dave-ward,我只是挖了很多javascript。大多数是由ASP.NET生成的用于验证和AJAX的东西,以" WebForm_"开头的一堆东西我认为是用于执行defaultbutton的标准东西,等等。我们在页面上唯一的javascript是用于切换可见性和进行一些自定义验证...
编辑:我确实发现以下内容。我不明白,但:P textarea所在的表单的开头,后来发现了一个脚本:(请注意,stackoverflow上的某些内容使下划线弄乱了)
<form name="Form1" method="post" action="default.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="Form1"> <script type="text/javascript"> //<![CDATA[ var theForm = document.forms['Form1']; if (!theForm) { theForm = document.Form1; } function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); } } //]]> </script>
回答
事实证明,这是Firefox + ASP.NET的错误,其中为defaultButton东西生成的javascript在Firefox中不起作用。我不得不按如下所述替换WebForm_FireDefatultButton函数:
function WebForm_FireDefaultButton(event, target) { var element = event.target || event.srcElement; if (event.keyCode == 13 && !(element && element.tagName.toLowerCase() == "textarea")) { var defaultButton; if (__nonMSDOMBrowser) { defaultButton = document.getElementById(target); } else { defaultButton = document.all[target]; } if (defaultButton && typeof defaultButton.click != "undefined") { defaultButton.click(); event.cancelBubble = true; if (event.stopPropagation) { event.stopPropagation(); } return false; } } return true; }
回答
http://blog.codesta.com/codesta_weblog/2007/12/net-gotchas---p.html为我工作。