При использовании MultiLine TextBox (который генерирует TextArea) настройка свойства MaxLength не влияет. Какое лучшее обходное решение? Я хотел бы получить базовую, предполагаемую функциональность с минимальным уродливым javascript и т.д. Просто запретите пользователю вводить больше, чем максимальное количество символов.
Как установить maxlength для многострочного TextBox?
Ответ 1
Если вы хотите сообщить пользователю, превысил ли он количество символов, когда он пишет, вы можете использовать функцию javascript, прикрепленную к событию нажатия клавиши. Эта функция проверяет длину ввода и отменяет рендеринг символов, если достигнут максимальный уровень.
Другим вариантом является использование элемента управления RegularExpressionValidator
для проверки ввода для отправки.
На мой взгляд, первый вариант намного лучше.
Я не добавляю никакого кода, так как Google полна примеров на любой вкус, это очень распространенная задача.
Здесь у вас есть пример поиска, который может помочь.
Ответ 2
Если вам не нравятся более старые браузеры (см. поддерживаемые браузеры здесь),
вы можете установить MaxLength как обычно,
<asp:TextBox ID="txt1" runat="server" TextMode="MultiLine" MaxLength="100" />
и заставить его распечатываться в HTML
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
txt1.Attributes.Add("maxlength", txt1.MaxLength.ToString());
}
Ответ 3
Эй, пукипуки, вы можете сделать следующее:
<asp:TextBox ID="txtValue" runat="server"TextMode="MultiLine" Rows="10"Columns="50"></asp:TextBox>
$(document).ready(function(){
var MaxLength = 250;
$('#txtValue').keypress(function(e)
{
if ($(this).val().length >= MaxLength)
{
e.preventDefault();
}
});});
Вы можете увидеть больше в этой следующей ссылке: http://jquerybyexample.blogspot.in/2010/10/set-max-length-for-aspnet-multiline.html
Ответ 4
Здесь кросс-браузерное решение:
<asp:TextBox TextMode="MultiLine" runat="server" ID="txtPurpose" Columns="50" Rows="2" onkeypress="return isokmaxlength(event,this,255);" ClientIDMode="static"></asp:TextBox>
Javascript:
function isokmaxlength(e,val,maxlengt) {
var charCode = (typeof e.which == "number") ? e.which : e.keyCode
if (!(charCode == 44 || charCode == 46 || charCode == 0 || charCode == 8 || (val.value.length < maxlengt))) {
return false;
}
}
Вам нужно подумать о копировании и вставке. Это немного сложно, я просто отключил его с помощью JQuery. Но вы можете создать свою собственную функцию для более сложной проверки. Но в моем случае копирование и вставка не разрешены.
Jquery для отключения копирования и вставки:
jQuery(function ($) {
$("#txtPurpose").bind({
paste: function (e) {
e.preventDefault();
}
});
});
Ответ 5
Если вы используете привязку объекта модели к этому текстовому полю, вы можете использовать атрибуты DataAnnotations, чтобы установить максимальную длину этого свойства. Я основанный на MVC об этом, но он должен работать и для ASP.NET!
Таким образом, вы не входите в какой-либо Javascript или не устанавливаете что-либо в разметке.
Ответ 6
Попробуйте это.
Dim script As String = ""
script = script + " <script type='text/javascript'> function CheckLength(obj) {"
script = script + " var object = document.getElementById(obj);"
script = script + " if (object.value.length > 5) {"
script = script + " object.focus();"
script = script + " object.value = object.value.substring(0, 5); "
script = script + " object.scrollTop = object.scrollHeight; "
script = script + " return false;"
script = script + " }"
script = script + " return true;"
script = script + " }</script>"
Dim b As New TextBox()
b.ID = "btnSomeButton"
b.TextMode = TextBoxMode.MultiLine
Mypanel.Controls.Add(b)
b.Attributes.Add("onkeyup", "return CheckLength('" & b.ClientID & "');")
Page.ClientScript.RegisterStartupScript(Page.GetType(), "key", script, False)