我有一些我继承的C#/ asp.net代码,它有一个我想制作多行的文本框。我这样做是通过添加textmode =“multiline”来实现的,但是当我尝试插入换行符时,输入键会提交表单:P
我用Google搜索,似乎默认行为应该是输入(或控制输入)来插入换行符。就像我说的那样,我继承了代码所以我不确定是否有javascript周围的问题,或者我是否只需要一个简单的asp.net事件。
答案 0 :(得分:4)
事实证明这是Firefox + ASP.NET的一个错误,其中生成的defaultButton内容的javascript在Firefox中不起作用。我必须按照here描述的方式替换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;
}
答案 1 :(得分:1)
我创建了一个带有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失去焦点时触发,因此不会出现问题。
答案 2 :(得分:1)
我无法在任何地方找到“WebForm_FireDefaultButton”javascript,这是asp.net正在生成的东西吗?
是
这是为了支持包含控件的表单和/或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;
}
答案 3 :(得分:0)
我怀疑它(就像你说的)一些自定义的javascript代码。
原始的asp.net控件工作正常......你将不得不检查代码
答案 4 :(得分:0)
您是否正在处理文本框的textchanged事件?这意味着ASP.Net会设置文本框,以便为可能导致文本框失去焦点的任何内容(包括回车键)引发回发(提交页面)。
答案 5 :(得分:0)
编辑:我确实找到了以下内容。我不明白这一点: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>
答案 6 :(得分:0)
答案 7 :(得分:-1)
您可以使用\ n输入密钥 即 [a-zA-Z 0-9 /。\ n] {20,500}