Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Чтоб параметр 70 менялось на 140 (https://javascript.ru/forum/misc/4008-chtob-parametr-70-menyalos-na-140-a.html)

verg 13.06.2009 15:35

Чтоб параметр 70 менялось на 140
 
:help: Привет, всем! Я плохо знаю javascript, помогите мне. Мне нужно чтоб при выборе ождной их 2-х радио кнопок, а именно первая "Кирилица", вторая "латиница", менялась цифра 70 на 140 вот тут -

Код:

..... displaylimit("document.limitForm.limit", "", 70);
            </script>

Сам код:
Код:

<textarea name="limit" cols="5" class="sms" align="top"></textarea>
            <br>
            <script type="text/javascript">
  var ns6=document.getElementById&&!document.all

  function restrictinput(maxlength, e, placeholder)
      {
      if (window.event && event.srcElement.value.length >= maxlength)
        return false;
      else if (e.target && e.target == eval(placeholder) && e.target.value.length >= maxlength)
        {
        var pressedkey = /[a-zA-Z0-9\.\,\/]/;
        if (pressedkey.test(String.fromCharCode(e.which)))
            e.stopPropagation();
        }
      }

  function countlimit(maxlength, e, placeholder)
      {
      var theform = eval(placeholder);
      var lengthleft = maxlength-theform.value.length;
      var placeholderobj = document.all ? document.all[placeholder] : document.getElementById(placeholder);
      if (window.event || e.target&&e.target == eval(placeholder))
        {
        if (lengthleft < 0)
            theform.value = theform.value.substring(0, maxlength);
        placeholderobj.innerHTML = lengthleft
        }
      }

  function displaylimit(thename, theid, thelimit)
      {
      var theform = theid != "" ? document.getElementById(theid) : thename;
      var limit_text = 'Осталось <span id="' + theform.toString() + '">' + thelimit + '</span> символов'; 
      if (document.all || ns6)
        document.write(limit_text)
      if (document.all)
        {
        eval(theform).onkeypress = function(){ return restrictinput(thelimit, event, theform)}
        eval(theform).onkeyup = function(){ countlimit(thelimit, event, theform)}
        }
      else if (ns6)
        {
        document.body.addEventListener('keypress', function(event) { restrictinput(thelimit, event, theform) }, true);
        document.body.addEventListener('keyup', function(event) { countlimit(thelimit, event, theform) }, true);
        }
      }

  displaylimit("document.limitForm.limit", "", 70);
            </script>


Gvozd 13.06.2009 15:54

как бы вам сказать
вызов функции выполняется до того, как вы щелкните радиокнопку
вы хотите, что бы щелчок по радиокнопке менял кодж в прошлом?

а если вы хотите, чтобы был повторный вызов этой функции, то повесьте его на обработчик события onclick соответсвующих радиокнопок

verg 13.06.2009 16:18

Подробный код.
 
Вот полный код:
Код:

<form style="border:0px;" action="index.php" method="post" name="limitForm">
<p><input name="r1" type="radio" value="70">
Кирилица
</p>
<p><input name="r2" type="radio" value="140">
Латиница
</p>



<textarea name="limit" cols="20" rows="5" class="sms" align="top"></textarea>
            <br>
            <script type="text/javascript">
  var ns6=document.getElementById&&!document.all

  function restrictinput(maxlength, e, placeholder)
      {
      if (window.event && event.srcElement.value.length >= maxlength)
        return false;
      else if (e.target && e.target == eval(placeholder) && e.target.value.length >= maxlength)
        {
        var pressedkey = /[a-zA-Z0-9\.\,\/]/;
        if (pressedkey.test(String.fromCharCode(e.which)))
            e.stopPropagation();
        }
      }

  function countlimit(maxlength, e, placeholder)
      {
      var theform = eval(placeholder);
      var lengthleft = maxlength-theform.value.length;
      var placeholderobj = document.all ? document.all[placeholder] : document.getElementById(placeholder);
      if (window.event || e.target&&e.target == eval(placeholder))
        {
        if (lengthleft < 0)
            theform.value = theform.value.substring(0, maxlength);
        placeholderobj.innerHTML = lengthleft
        }
      }

  function displaylimit(thename, theid, thelimit)
      {
      var theform = theid != "" ? document.getElementById(theid) : thename;
      var limit_text = 'Осталось <span id="' + theform.toString() + '">' + thelimit + '</span> символов'; 
      if (document.all || ns6)
        document.write(limit_text)
      if (document.all)
        {
        eval(theform).onkeypress = function(){ return restrictinput(thelimit, event, theform)}
        eval(theform).onkeyup = function(){ countlimit(thelimit, event, theform)}
        }
      else if (ns6)
        {
        document.body.addEventListener('keypress', function(event) { restrictinput(thelimit, event, theform) }, true);
        document.body.addEventListener('keyup', function(event) { countlimit(thelimit, event, theform) }, true);
        }
      }

  displaylimit("document.limitForm.limit", "", 70);
            </script>
          </p>
          </form>

Мне нужно чтоб по клику по радио-кнопке r2, в коде на 4 строке снизу менялось число 70 на 140, и обратно если кликнули по r1. Помогите совсем не шарю в javascript, знаю только PHP. Сможите кто-нибудь написать это на javascript... ЗАРАНЕЕЕ, БОЛЬШОЕ, БОЛЬШОЕ СПАСИБО!!!!

Gvozd 13.06.2009 16:33

Вспомнилось:
Цитата:

Сообщение от 66142 (сохранена 2009-06-09 в 22:35)
Программистам на perl (да и другим).
Выдержка из примера использования библиотеки Date::Simple
if ($today > $tomorrow) {
die "warp in space-time continuum";
}

Повторю еще раз:
вы просите невозможного, а именно повлиять событие пользователя на уже свершивишийся факт
а факт, заключается в том, что функция displaylimit при своем вызове генерирует эту самую надпись, и при таком варианте кода, этот факт исправить нельзя
более того повторный вызов этой функции перезапишет документ нах
Это примерно, как если бы я вас попросил код на PHP, в котором сначала делается вывод данных в браузер, потом весь буфер сбрасывается дальше, а потом вдруг мы осознаем, что нам не надо было отправлять этот текст
вы что-то сможете сделать на PHP?
если да, то я буду сильно удивлен

вот и тут нельзя
надо этот код переписать, чтобы он не использовал document.write, и тогда то что вы хотите будет доступно
кстати, этот код является морально устаревшим и довольно громоздким для своей функциональности, поэтому лучше его полностью переписать, а не только этот момент
переписывать за вас никто не будет.
это вам в раздел работа


Часовой пояс GMT +3, время: 18:00.