我有一些我继承的C# / asp.net代码,它有一个文本框,我想让它多行。为此,我添加了textmode="multiline“,但当我尝试插入新行时,enter键却提交了表单:P
我用谷歌搜索了一下,似乎默认的行为应该是enter (或control-enter)插入一个换行符。就像我说的,我继承了代码,所以我不确定是不是有javascript在胡乱修改,还是只有一件简单的asp.net事情需要我去做。
发布于 2008-08-28 06:16:02
事实证明,这是火狐+ ASP.NET的一个错误,为defaultButton内容生成的javascript在火狐中不起作用。我必须按照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;
}
发布于 2008-08-27 06:22:39
我创建了一个带有TextBox和按钮的示例页面,它对我来说工作得很好:
<asp:TextBox runat="server" ID="textbox1" TextMode="MultiLine" />
<br />
<br />
<asp:Button runat="server" ID="button1" Text="Button 1" onclick="button1_Click" />
因此,它很可能取决于您设置的其他属性,或者窗体上的其他控件。
编辑:只有当TextBox失去焦点时才会触发TextChanged事件,所以这不是问题所在。
发布于 2008-08-27 07:02:12
我在任何地方都找不到"WebForm_FireDefaultButton“javascript,它是asp.net生成的吗?
是。
它是为支持窗体和/或包含控件的面板的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;
}
https://stackoverflow.com/questions/30230
复制相似问题