Firefox не будет проверять данные формы - PullRequest
3 голосов
/ 14 октября 2011

Следующая простая форма с javascript с кнопкой onclick не работает в Firefox (у меня версия 7), но отлично работает в IE, Chrome и Safari.Чего мне не хватает?

<head>
<script type="text/javascript">
    function result() {
        alert(calc.input.value);
        }
</script>

</head>
<body>

<form name="calc" action="">
    <input class="cInput" type="text" name="input" size="16" /><br/>
    <input type="button" class="cButton" name="seven" value="1" onclick="calc.input.value += '1'" />
    <input type="button" class="cButton" name="equal" value="=" onclick="result()" /><br/>
</form>
</body>

Ответы [ 2 ]

1 голос
/ 14 октября 2011

Чего мне не хватает?

Вам не хватает того, что IE добавляет имена и идентификаторы элементов в качестве глобальных переменных. Некоторые другие браузеры в определенных условиях (иногда требующие, чтобы документ находился в режиме причуд) копируют этот хаббит, а некоторые - нет.

Таким образом, в IE (и некоторых других) имя формы calc является глобальной переменной, ссылающейся на форму, а в других браузерах это не так.

Метод в ответе Дануянда - это надежный кросс-браузерный способ получения ссылки на форму. Формальный метод доступа:

document.forms['calc'];

Именованные элементы управления формы можно получить аналогичным образом:

document.forms['calc'].elements['input'];

или

document.calc.input;

Будьте осторожны с указанием имен элементов управления, которые совпадают с тегами, это немного сбивает с толку. Кроме того, если существует более одного элемента управления с одинаковым именем, вы получите HTML-коллекцию , а не один элемент.

Возможно, вы захотите прочитать о HTMLForms и связанных с ними элементах.

1 голос
/ 14 октября 2011
<script type="text/javascript">
    var calc;
    function result() {
        calc = document.forms['calc'];
        alert(calc.input.value);
        }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...