50 个字符时文本框自动换行 asp.net
textbox auto newline when 50 character asp.net
我有一个供用户输入的文本框,下面的代码是我如何创建文本框的。
<asp:TextBox ID="txtIncidentDesc" runat="server" Height="50px" Width="441px" Columns="4" Rows="8"></asp:TextBox>
我想当用户键入长文本时,例如
tttttttttttttttttttttttttttttttttttttttttttttttttttt
每当它遇到 50 个字符时,它会自动换行,如
tttttttttttttttttttttttttt
tttttttttttttttttttttttttt
有谁知道我的代码有什么问题吗?
提前致谢!
非常感谢您的意见和建议!
您的文本框似乎应用了分词,可能在 CSS?
最好的选择是在 CSS.
中添加一个分词符:正常
或者您可以内联:
<asp:TextBox ID="txtIncidentDesc" runat="server" Height="50px" Width="441px" Columns="4" Rows="8" style="word-break:normal;"></asp:TextBox>
我遇到了类似的问题,我试过的是。
<textarea id="txtdesc"></textarea>
Jquery代码
$(document).ready(function(){
$('#txtdesc').keypress(function(e){
var text = $(this).val();
var lines = text.split('\n');
if (e.keyCode == 13){
return true;
}
else{
//Should check for backspace/del/etc.
var cane = $(this).get(0).selectionStart;
var line = 0;
var charCount = 0;
$.each(lines, function(i,e){
charCount += e.length;
if (cane <= charCount){
line = i;
return false;
}
//\n count for 1 char;
charCount += 1;
});
var currentline = lines[line];
return currentline.length < 11;
}
});
});
根据您的代码,您没有指定任何文本模式,因此默认情况下它将文本模式视为单行。关于某个字符后的新行,你必须检查它并触发函数来拆分。如果我们提到 textmode 为多行,这里它采用你提到的宽度然后转到下一行。
所以这段代码可以帮助您解决问题:
<script type="text/javascript">
function CheckReturns()
{
var txt = document.getElementById("TextBox1");
var splitResults = txt.value.split("\n");
if (splitResults[splitResults.length - 1].length < 50)
{
return true;
}
else
{
txt.value = txt.value + "\n\r";
}
}
</script>
调用文本框onkeydown脚本:
<asp:TextBox ID="TextBox1" Height="50px" Width="500px" Rows="8" Columns="4" runat="server" onkeydown="return CheckReturns();" TextMode="MultiLine"></asp:TextBox>
试试这个例子。它将为您提供线索并帮助您找到解决方案。
var cnt = 1;
function newline(text) {
var val = document.getElementById(text).value;
var t;
if (cnt > 1)
t = (val.length / 10 * 10) / cnt;
else
t = val.length;
if (t == 10) {
document.getElementById(text).value = val + '\n';
cnt = cnt + 1;
}
}
<textarea id="tb" onkeypress="newline(this.id)" cols="30" rows="4"></textarea>
我有一个供用户输入的文本框,下面的代码是我如何创建文本框的。
<asp:TextBox ID="txtIncidentDesc" runat="server" Height="50px" Width="441px" Columns="4" Rows="8"></asp:TextBox>
我想当用户键入长文本时,例如
tttttttttttttttttttttttttttttttttttttttttttttttttttt
每当它遇到 50 个字符时,它会自动换行,如
tttttttttttttttttttttttttt
tttttttttttttttttttttttttt
有谁知道我的代码有什么问题吗?
提前致谢!
非常感谢您的意见和建议!
您的文本框似乎应用了分词,可能在 CSS?
最好的选择是在 CSS.
中添加一个分词符:正常或者您可以内联:
<asp:TextBox ID="txtIncidentDesc" runat="server" Height="50px" Width="441px" Columns="4" Rows="8" style="word-break:normal;"></asp:TextBox>
我遇到了类似的问题,我试过的是。
<textarea id="txtdesc"></textarea>
Jquery代码
$(document).ready(function(){
$('#txtdesc').keypress(function(e){
var text = $(this).val();
var lines = text.split('\n');
if (e.keyCode == 13){
return true;
}
else{
//Should check for backspace/del/etc.
var cane = $(this).get(0).selectionStart;
var line = 0;
var charCount = 0;
$.each(lines, function(i,e){
charCount += e.length;
if (cane <= charCount){
line = i;
return false;
}
//\n count for 1 char;
charCount += 1;
});
var currentline = lines[line];
return currentline.length < 11;
}
});
});
根据您的代码,您没有指定任何文本模式,因此默认情况下它将文本模式视为单行。关于某个字符后的新行,你必须检查它并触发函数来拆分。如果我们提到 textmode 为多行,这里它采用你提到的宽度然后转到下一行。
所以这段代码可以帮助您解决问题:
<script type="text/javascript">
function CheckReturns()
{
var txt = document.getElementById("TextBox1");
var splitResults = txt.value.split("\n");
if (splitResults[splitResults.length - 1].length < 50)
{
return true;
}
else
{
txt.value = txt.value + "\n\r";
}
}
</script>
调用文本框onkeydown脚本:
<asp:TextBox ID="TextBox1" Height="50px" Width="500px" Rows="8" Columns="4" runat="server" onkeydown="return CheckReturns();" TextMode="MultiLine"></asp:TextBox>
试试这个例子。它将为您提供线索并帮助您找到解决方案。
var cnt = 1;
function newline(text) {
var val = document.getElementById(text).value;
var t;
if (cnt > 1)
t = (val.length / 10 * 10) / cnt;
else
t = val.length;
if (t == 10) {
document.getElementById(text).value = val + '\n';
cnt = cnt + 1;
}
}
<textarea id="tb" onkeypress="newline(this.id)" cols="30" rows="4"></textarea>