Фрилансеры предложат решение вашей задачи уже через несколько минут!

Публикация заказа на фриланс бирже не займет много времени.

10 лет назад
Алексей М.
45 лет, Россия
12 лет в сервисе
Был онлайн 2 месяца назад
10 лет назад

Необходимо деактивировать кнопку "Submit" пока в поле textarea не будет заданного кол-ва знаков.
Запретить копирование текста из textarea.

Что уже есть:
Есть счетчик знаков (и работает на сайте) в текстовом поле (взято отсюда http://chtivo.webhost.ru/articles/widgets2.php ):

// prototype-analog
function $(obj) {
if (typeof obj == 'object')
return obj;
if (document.getElementById)
return (document.getElementById(obj));
else if (document.all)
return document.all(obj);

return null;
}

// PHP str_replace-analog
String.prototype.str_replace = function(srch, rpl)
{
var ar = this.split(srch);
return ar.join(rpl);
}

// Узнаём родительский элемент
function getParent(el) {

return ((el.parentElement) ? el.parentElement : ((el.parentNode) ? el.parentNode : null));

}

// Узнаём параметры элемента: ширину, высоту, а также координаты
function getElementPosition(el)
{

w = el.offsetWidth;
h = el.offsetHeight;

l = t = 0;

while (el)
{
l += el.offsetLeft;
t += el.offsetTop;
el = el.offsetParent;
}

return {"left":l, "top":t, "width": w, "height":h};
}

function createTextAreaWidget(el, min, max)
{
var el = $(el);
var counter = $('counter' + el.id);
if (!counter)
{
var parent = getParent(el);
var counter = document.createElement('div');
counter.setAttribute('id', 'counter' + el.id);
counter.className = 'counter';
parent.appendChild(counter);
parent.style.position = 'relative';
counter.style.position = 'absolute';

counter.style.left = getElementPosition(el).width + 2 + 'px';
counter.style.top = 0;
counter.style.height = getElementPosition(el).height + 'px';
}

// перенос строки js принимает за два знака. Исправляем.
len = el.value.str_replace(String.fromCharCode(13), '').length;
if (len >= max) {
el.value = el.value.substr(0, max);
len = max;
}

el.onkeyup = function () {createTextAreaWidget(el, min, max);}
el.onchange = function () {createTextAreaWidget(el, min, max);}
createStat(counter, min, max, len);

}

function createStat(el, min, max, current)
{
el.innerHTML = '<span class=min>&lt; ' + min + '<\/span><br>';
var className = (current <= min) ? 'gray' : ((current >= max) ? 'red' : 'normal');
var cur = (current >= max) ? current + ' !!!' : current;
el.innerHTML += '<span class=' + className + '>= ' + cur + '<\/span><br>';
el.innerHTML += '<span class=max>&gt; ' + max + '<\/span>';
}


и выводится на странице так:
<div><textarea name="text1" id="some_id1"></textarea>
<script type='text/javascript'>
<!--
createTextAreaWidget('text1', 100, 2500);
-->
</script>
</div>


Далее здесь http://webmaster.yandex.ru/addurl.xml нашел скрипт как деактивировать Submit
но провера идет по полю input а не textarea
<script type="text/javascript">

function check() {
// не работает в ff3 if ($(".required[value != '']").length == 0) {
if ($("input[type=text]").filter(function(index){return $(this).attr("value") == ''}).length == 0 && $("input[name=rep]").val().length == '6') {
$("input[type=submit]").attr("disabled", "");
} else {
$("input[type=submit]").attr("disabled", "disabled");
}
}

$(function(){
check();
$("input[type=text]").bind("keyup", check);
});

</script>

и еще <script type="text/javascript" charset="utf-8" src="http://webmaster.yandex.ru//js.static.yandex.net/jquery/1.3.2/_jquery.js"></script>
они для этого дела подключают.


А здесь http://htmlweb.ru/java/example/block_mark.php написано как запретить выделение и копирование текста, но кроме полей INPUT и TEXTAREA
А мне надо именно в TEXTAREA

В общем все это надо объединить в один скрипт и убрать лишнее. Добавить в счетчик исключение двух и более пробелов в кол-ве знаков. Чтобы после первого пробела второй и следующие не засчитывались бы как знаки.
Минимально кол-во знаков задается в первом скрипте. И в страницу вставляется через вызов отдельно скрипта, а не в теле прописан.

По оплате: безопасная сделка или ЭПС

Выбранный исполнитель
Пушкин В.
34 года, Россия
10 лет в сервисе
Был онлайн 10 лет назад
10 лет назад

$10

1 день

Отзыв заказчика
Что называется "Сказано - сделано". Никаких нареканий и претензий. Рекомендую.
Отзыв фрилансера
Приятно было сотрудничать. Хороший заказчик. Рекомендую.
Пушкин В.
34 года, Россия
10 лет в сервисе
Был онлайн 10 лет назад
10 лет назад

Другие заказы в категории «Веб-программирование»

Здесь заказчик и фрилансеры могут обсуждать заказ до начала его выполнения.
Фрилансеры могут участвовать в обсуждении только после подачи заявки.
Здесь заказчик будет контролировать выполнение заказа и общаться с исполнителем.
Доступ к этому разделу имеют только заказчик и выбранный исполнитель.
Все материалы этого раздела закрыты от поисковых систем.