Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   javascript, doctype и FF (https://javascript.ru/forum/misc/8401-javascript-doctype-i-ff.html)

DEADCAT 23.03.2010 21:32

javascript, doctype и FF
 
Добрый день!
есть функция
function upperme(inputstr,maxlen,inputnum)
{
  if (inputstr.value.length > maxlen)
      inputstr.value = inputstr.value.substring(0, maxlen);
 inputnum.innerHTML = 'Осталось '+(maxlen - inputstr.value.length)+' символов';
}


прописан doctype
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


В IE работает в FF нет.

Помогите, пожалуйста!

Octane 23.03.2010 21:39

http://javascript.ru/tutorial/dom/search

DEADCAT 23.03.2010 21:50

спасибо за ссылку, я не ас в javascript.

переделал вот так

function upperme(inputstr,maxlen,inputnum)
{
  if (document.getElementsByName('job_requirements').value.length > maxlen)
      document.getElementsByName('job_requirements').value = document.getElementsByName('job_requirements').value.substring(0, maxlen);
 document.getElementById('numReq').innerHTML = 'Осталось '+(maxlen - document.getElementsByName('job_requirements').value.length)+' символов';
}


По ходу не то переделал. Не работает. Можете еще подсказать?

Octane 23.03.2010 22:17

getElementsByName возвращает коллекцию элементов.

DEADCAT 23.03.2010 22:45

поправил, explorer написал, что
(document.getElementByName('job_requirements').value.length
не поддерживает это свойство или метод...

Octane 23.03.2010 22:47

Правильно, метода getElementByName не существует :)

DEADCAT 23.03.2010 22:52

Вот что в итоге получилось:
<SCRIPT type="text/javascript">
function upperme(inputstr,maxlen,inputnum)
{
  if (document.getElementById('job_requirements').value.length > maxlen)
      document.getElementById('job_requirements').value = document.getElementById('job_requirements').value.substring(0, maxlen);
 document.getElementById('numReq').innerHTML = 'Осталось '+(maxlen - document.getElementById('job_requirements').value.length)+' символов';
}
</SCRIPT>

<textarea name='job_requirements' id="job_requirements" rows='7' cols='35'
onfocus="upperme(this,8,numReq)"
onchange="upperme(this,8,numReq)"
onkeyup="upperme(this,8,numReq)"
onkeydown="upperme(this,8,numReq)"
onkeypress="upperme(this,8,numReq)"></textarea>
<label id="numReq" for="job_requirements"> </label>


Только в FF все равно не работает...

Octane 23.03.2010 23:02

Цитата:

Сообщение от DEADCAT
upperme(this,8,numReq)

Здесь несуществующая переменная numReq, используйте Firebug для просмотра ошибок.

И ссылку на элемент можно запоминать, чтобы 10 раз не искать:
var job_req = document.getElementById('job_requirements');
  if (job_req.value.length > maxlen)
      job_req.value = job_req.value.substring(0, maxlen);
      …

DEADCAT 23.03.2010 23:13

спасибо! все работает. Странно что все это в IE работало...

Octane 23.03.2010 23:17

Цитата:

Сообщение от DEADCAT
Странно что все это в IE работало...

Просто в IE для каждого элемента с идентификатором создается глобальная ссылка по имени идентификатора, но это нестандартное поведение, поэтому другие браузеры, при переключении в Standards Compliant Mode (добавление DOCTYPE), перестают так делать, а в Quirks Mode (без DOCTYPE) добавляют глобальные ссылки для совместимости со старыми сайтами.


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