#javascript #html
#javascript #HTML
Вопрос:
У меня есть многострочная текстовая область, которая принимает 42 символа, и если пользователь превысит лимит и нажмет кнопку отправки, он получит предупреждающее сообщение типа «превышен лимит, поэтому удалите символы «***». Ниже приведен код, который выполняет то же самое.
<head runat="server">
<title></title>
<script type="text/javascript">
function ok(maxchars) {
if (document.ourform.box.value.length > maxchars) {
alert('Too much data in the text box! Please remove '
(document.ourform.box.value.length - maxchars) ' characters');
return false;
}
else
return true;
}
</script>
</head>
<body>
<div>
<form action="http://www.cs.tut.fi/cgi-bin/run/~jkorpela/chkarea.pl"
method="post" name="ourform" onsubmit="return ok(42)">
Please enter data, at most 42 characters:<br/>
<textarea name="box" rows="5" cols="30">
</textarea>
<br/><input type="submit"/>
</form>
</div>
</body>
</html>
Но моя проблема в том, что я должен получить то же самое предупреждающее сообщение, как только я смещу фокус управления из области текстового поля вместо нажатия кнопки отправки.
Поэтому, пожалуйста, помогите мне достичь этого …!!
Заранее спасибо…
Дополнительное требование: После получения предупреждающего сообщения и нажатия кнопки ok лишние символы должны быть удалены. Пожалуйста, помогите..
Комментарии:
1. Вы хотите использовать jquery?
Ответ №1:
Вот простое решение с использованием jQuery
$(function(){
$("#box").keypress(function(){
if($(this).val().trim().length > $(this).data("limit") - 1) {
alert("You have reached the limit");
return false;
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="" method="post" name="ourform">
Please enter data, at most 42 characters:<br/>
<textarea name="box" rows="5" cols="30" data-limit="10" id="box"></textarea>
<br/><input type="submit"/>
</form>
Пожалуйста, попробуйте это.
Комментарии:
1. Пожалуйста, помогите с дополнительными требованиями.
2. Каковы ваши дополнительные требования?
3. Дополнительное требование: После получения предупреждающего сообщения и нажатия кнопки ok лишние символы должны быть удалены. Пожалуйста, помогите..
Ответ №2:
Вам нужно будет использовать событие onchange или keyup, чтобы привязать это к текстовой области.
Сначала добавьте идентификатор в свою текстовую область. Затем привяжите к нему прослушиватель событий и вызовите свою функцию.
document.getElementById("textAreaBox").addEventListener("keyup", ok(42));
Для предупреждения вы можете использовать onpropertychange
событие в HTML.
<textarea name="box" rows="5" cols="30" onpropertychange="ok(42)">
</textarea>
Комментарии:
1. Куда я должен добавить document.getElementById(«textAreaBox»).addEventListener(«keyup», ok(42)); строку в моем коде???
2. Сразу после закрывающей скобки для вашей
ok()
функции.
Ответ №3:
добавьте это onblur=»ok (42)» или onkeyup =»ok (42)» внутри вашей текстовой области
<textarea name="box" rows="5" cols="30" onblur="ok(42)">
</textarea>
OR
<textarea name="box" rows="5" cols="30" onkeyup="ok(42)">
</textarea>
Комментарии:
1. Пожалуйста, помогите с дополнительным требованием
Ответ №4:
Вы можете указать идентификатор / класс для текстовой области и использовать простые события JqueryEvents — Onblur или FocusOut для запуска вашей функции. —>https://api.jquery.com/blur /
Событие размытия Javascript -> http://www.w3schools.com/jsref/event_onblur.asp
Ответ №5:
Вы можете присвоить своей текстовой области атрибут ‘maxlength‘. Вот пример. Это работает.
<form action="http://www.cs.tut.fi/cgi-bin/run/~jkorpela/chkarea.pl"
method="post" name="ourform" onsubmit="return ok(42)">
Please enter data, at most 42 characters:<br />
<textarea name="box" rows="5" cols="30" maxlength="42">
</textarea>
<br />
<input type="submit" />
</form>