【发布时间】:2011-09-05 13:34:41
【问题描述】:
如何在 asp.net 文本框(Web 应用程序)的文本中添加分号,按下 enter 并将光标移动到下一行?
【问题讨论】:
标签: javascript .net dom-events
如何在 asp.net 文本框(Web 应用程序)的文本中添加分号,按下 enter 并将光标移动到下一行?
【问题讨论】:
标签: javascript .net dom-events
这是一个使用纯 JavaScript 的解决方案。
HTML
<asp:TextBox ID="DemoTextBox" runat="server"
CssClass="textarea"
TextMode="MultiLine"/>
代码隐藏(onclick javascript 事件连接)
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
DemoTextBox.Attributes.Add("onkeypress", "AppendSemiColon(this, event)");
}
}
JavaScript
function AppendSemiColon(objTextBox, evt) {
if (evt.keyCode == 13) {
objTextBox.value += ";";
}
}
【讨论】:
您可以在 JavaScript 中捕获 keypress 事件并检查它是哪个键。 “回车”的键码是 13。所以如果他们按下回车,附加一个分号并返回。像这样的:
编辑:(包含 ASP.NET 标记等的更完整示例)
<!-- page headers, other markup, etc. -->
<asp:TextBox ID="txtActiontaken" runat="server" />
<!-- other markup, the rest of the page, etc. -->
<script type="text/javascript">
$(document).ready(function(){
$('#<%=txtActiontaken.ClientID%>').keypress(function(e) {
if(e.keyCode == 13) {
// append a semi-colon to the control's value
$('#<%=txtActiontaken.ClientID%>').val($(' <%=txtActiontaken.ClientID%>').val()+';');
}
return true;
});
});
</script>
【讨论】:
$(document).ready(function(){ ... }); 中,以确保它在 DOM 加载之前不会运行。你确实用JavaScript 标记了这个问题,所以我想你知道我在说什么,对吧?
txtActiontaken 替换为<%=txtActiontaken.ClientID%>,因为该标识符可能是服务器端的,而JavaScript 将需要客户端标识符。另外,不要忘记 jQuery 选择器中的 # 之前的 #(如我的示例中所示)。如果您使用 Google jQuery,您可以找到很多文档和示例。