我继承了一些C# /asp.net代码,其中有一个文本框,我想将其设置为多行,我通过添加textmode=“multiline”来实现,但当我尝试插入一个换行符时,回车键提交的却是表单:P我在谷歌上搜索了一下,看起来默认的行为应该是回车(或control-enter)插入一个换行符,就像我说的,我继承了代码,所以我不确定是否有javascript的恶作剧,或者是否有一个简单的asp.net的事情我必须做。
oxiaedzo1#
原来这是Firefox + ASP.NET的一个bug,为defaultButton生成的javascript在Firefox中不起作用,我不得不用一个替代WebForm_FireDefatultButton函数,如here所述:
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; }
vshtjzan2#
我创建了一个带有TextBox和Button的示例页面,它对我来说工作得很好:
<asp:TextBox runat="server" ID="textbox1" TextMode="MultiLine" /> <br /> <br /> <asp:Button runat="server" ID="button1" Text="Button 1" onclick="button1_Click" />
因此,它很可能取决于您设置的其他属性或窗体上的其他控件。Edit:TextChanged事件仅在TextBox失去焦点时触发,因此这不是问题所在。
oknwwptz3#
我在任何地方都找不到"WebForm_FireDefaultButton" javascript,它是www.example.com正在生成的吗?asp.net is generating?是的。生成它是为了支持包含您的控件的窗体和/或Panel的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; }
myzjeezk4#
我怀疑这是(就像你说的)一些自定义javascript代码。原来的asp.net控件工作正常...您将不得不检查代码
8zzbczxx5#
您是否正在处理文本框的textchanged事件?这意味着ASP.NET将文本框设置为对任何 * 可能 * 导致文本框失去焦点的内容(包括回车键)进行回发(提交页面)。
ie3xauqp6#
@dave-ward,我刚刚挖掘了土丘的javascript。大部分是ASP.NET生成的用于验证和 AJAX 的东西,还有一堆以“WebForm_”开头的东西,我猜是做默认按钮的标准东西,等等。我们放在页面上的唯一javascript是用于切换可见性和做一些自定义验证的...编辑:我确实找到了下面的内容,但我不明白:P文本区域所在表单的开头,以及后来找到的脚本:(注意,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>
z6psavjg7#
http://blog.codesta.com/codesta_weblog/2007/12/net-gotchas---p.html对我很有效。
r7s23pms8#
这对我很有效<asp:TextBox ID="emailTo" TextMode="MultiLine" Rows="5" Columns="25" Wrap="true" Style="white-space:normal" runat="server"></asp:TextBox>
au9on6nz9#
您可以使用\n作为回车键,例如[a-zA-Z 0-9/.\n]{20,500}
9条答案
按热度按时间oxiaedzo1#
原来这是Firefox + ASP.NET的一个bug,为defaultButton生成的javascript在Firefox中不起作用,我不得不用一个替代WebForm_FireDefatultButton函数,如here所述:
vshtjzan2#
我创建了一个带有TextBox和Button的示例页面,它对我来说工作得很好:
因此,它很可能取决于您设置的其他属性或窗体上的其他控件。
Edit:TextChanged事件仅在TextBox失去焦点时触发,因此这不是问题所在。
oknwwptz3#
我在任何地方都找不到"WebForm_FireDefaultButton" javascript,它是www.example.com正在生成的吗?asp.net is generating?
是的。
生成它是为了支持包含您的控件的窗体和/或Panel的DefaultButton功能。这是它的源代码:
myzjeezk4#
我怀疑这是(就像你说的)一些自定义javascript代码。
原来的asp.net控件工作正常...您将不得不检查代码
8zzbczxx5#
您是否正在处理文本框的textchanged事件?这意味着ASP.NET将文本框设置为对任何 * 可能 * 导致文本框失去焦点的内容(包括回车键)进行回发(提交页面)。
ie3xauqp6#
@dave-ward,我刚刚挖掘了土丘的javascript。大部分是ASP.NET生成的用于验证和 AJAX 的东西,还有一堆以“WebForm_”开头的东西,我猜是做默认按钮的标准东西,等等。我们放在页面上的唯一javascript是用于切换可见性和做一些自定义验证的...
编辑:我确实找到了下面的内容,但我不明白:P文本区域所在表单的开头,以及后来找到的脚本:(注意,stackoverflow上的某些东西弄乱了下划线)
z6psavjg7#
http://blog.codesta.com/codesta_weblog/2007/12/net-gotchas---p.html对我很有效。
r7s23pms8#
这对我很有效
<asp:TextBox ID="emailTo" TextMode="MultiLine" Rows="5" Columns="25" Wrap="true" Style="white-space:normal" runat="server"></asp:TextBox>
au9on6nz9#
您可以使用\n作为回车键,例如[a-zA-Z 0-9/.\n]{20,500}