Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.08.2010, 14:29
Новичок на форуме
Отправить личное сообщение для versus_spb Посмотреть профиль Найти все сообщения от versus_spb
 
Регистрация: 08.08.2010
Сообщений: 2

Баг в IE при попытке установить disabled у кнопки
Все привет!
Долго бился с одной проблемой в IE. Наконец её решил и хочу поделиться этим, вдруг кому пригодится, так как нигде не нашёл подобного.
Столкнулся с тем, что никак не удавалось устанавливать или убирать disabled у кнопки submit в форме. Никаким способом.

Пробовалось следующее:
document.getElementById('mod_order_submit').disabled = true;

и такое (в связке с MooTools)
$('mod_order_submit').set('disabled', true);


Это просто взрывало моск, так как в браузерах это работало.
Оказалось, что проблемы была вызвана тем, что помимо submit у меня стоял hidden input с таким же именем (ну другим ID). (только не надо спрашивать, зачем, так было удобно). Поменял имя и проблема решилась.

Вот пример кода, который показывает данный баг. Проверено в IE 7, 8.

<form id="form1" name="form1" method="post" action="">
	<input type="button" value="toggle disabled" onclick="document.getElementById('button1').disabled = !document.getElementById('button1').disabled;" />
	<input type="submit" name="button1" id="button1" value="Submit" />
</form>



<form id="form1" name="form1" method="post" action="">
	<input type="button" value="toggle disabled" onclick="document.getElementById('button2').disabled = !document.getElementById('button2').disabled;" />
	<input type="hidden" name="button2" id="test_id" />
	<input type="submit" name="button2" id="button2" value="Submit" />
</form>


Надеюсь, кому-то это будет полезно.
p.s. Прошу не писать, как многие любят: а зачем делать то-то и то-то, кому это нужно. Может кому-то и нужно. Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 10.08.2010, 15:18
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Ну да, есть такая бага в IE.

Забавный был случай, когда под мутулсом в IE внезапно перестало загружаться содержимое в див. Оказалось, у дива был id «description», а в документ был добавлен <meta name="description">.
Ответить с цитированием
  #3 (permalink)  
Старый 10.08.2010, 16:52
Новичок на форуме
Отправить личное сообщение для versus_spb Посмотреть профиль Найти все сообщения от versus_spb
 
Регистрация: 08.08.2010
Сообщений: 2

Да, сильно! Спасибо что написали - это тоже ведь может кому-то пригодиться
Ответить с цитированием
  #4 (permalink)  
Старый 14.08.2010, 12:47
Интересующийся
Отправить личное сообщение для reutovo Посмотреть профиль Найти все сообщения от reutovo
 
Регистрация: 09.11.2008
Сообщений: 22

Через setAttribute/removeAttribute это нельзя сделать?
Ответить с цитированием
  #5 (permalink)  
Старый 17.11.2011, 14:12
Новичок на форуме
Отправить личное сообщение для strike55 Посмотреть профиль Найти все сообщения от strike55
 
Регистрация: 17.11.2011
Сообщений: 2

Сообщение от reutovo Посмотреть сообщение
Через setAttribute/removeAttribute это нельзя сделать?
Подскажите пожалуйста как ?

Имею анкету на php
anketa.php
<font face="verdana" size="1">
<form action="send.php" method="post">

<p>* Пожалуйста представьтесь:<br>
<input type="text" name="name"></p>
<p>* Ваш контактный телефон:<br>
<input type="text" name="phone"></p>
<p>Ваш email:<br>
<input type="text" name="email"></p>
<p>Марка Вашего автомобиля:<br>
<input type="text" name="auto"></p>
<p>Год выпуска автомобиля:<br>
<input type="text" name="year"></p>
<p>Взял(а) масло (выбирите значение) :<br>
<select size="1" name="oil" style="border: 1px solid #cccccc; background-color: #ffffff;" size="26">
<option>На розлив</option>
<option>В канистре</option>
</select><br><br></p>
<p>* Название СТО, где проводилась замена масла:<br>
<input type="text" name="sto"></p>
<p>* Введите данные чека (номер чека, дата и время):<br>
<input type="text" name="check"></p>
<p>Предложения и пожелания:<br>
<textarea name="message" cols="40" rows="5" ></textarea>
</p>
<p>Введите числа с картинки: <br>
		<?php 
		$i=1;
		do
		{
		$num[$i] = mt_rand(0,9);
		echo "<img src='anketa/img/".$num[$i].".gif' border='0' align='bottom' vspace='5px'>";
		$i++;
		}
		while ($i<5);
		$captcha = $num[1].$num[2].$num[3].$num[4];
		?>
<input name="captcha" type="hidden" value="<?php echo $captcha ;?>">
<input name="pr" style=" margin-bottom:11px" type="text" size="6" maxlength="4"></p>
<p><input type="submit" class="bt1" value="Отправить анкету"></p>


send.php

<?php
if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}
if (isset($_POST['phone'])) {$phone = $_POST['phone']; if ($phone == '') {unset($phone);}}
if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '') {unset($email);}}
if (isset($_POST['auto'])) {$auto = $_POST['auto']; if ($auto == '') {unset($auto);}}
if (isset($_POST['year'])) {$auto = $_POST['year']; if ($year == '') {unset($year);}}
if (isset($_POST['oil'])) {$oil = $_POST['oil']; if ($oil == '') {unset($oil);}}
if (isset($_POST['sto'])) {$sto = $_POST['sto']; if ($sto == '') {unset($sto);}}
if (isset($_POST['check'])) {$check = $_POST['check']; if ($check == '') {unset($check);}}
if (isset($_POST['message'])) {$message = $_POST['message']; if ($message == '') {unset($message);}}
if (isset($_POST['pr'])){$pr = $_POST['pr']; if ($pr == '') {unset($pr);}}
if (isset($_POST['captcha'])){$captcha = $_POST['captcha'];}


/* Проверяем заполнены ли все поля */
if (isset($name) && isset($phone) && isset($sto) && isset($check) && isset($pr))
{

/* Убираем все лишние пробелы, а также преобразуем все теги HTML в символы*/
$name = htmlspecialchars(trim($name));
$phone = htmlspecialchars(trim($phone));
$email = htmlspecialchars(trim($email));
$auto = htmlspecialchars(trim($auto));
$year = htmlspecialchars(trim($year));
$oil = htmlspecialchars(trim($oil));
$sto = htmlspecialchars(trim($sto));
$check = htmlspecialchars(trim($check));
$message = htmlspecialchars(trim($message));

/* Проверяем правильность ввода email-адреса */

if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email))
{
echo "<p>Неверный формат e-mail адреса<br></p>";
}
if(!preg_match("/[0-9]/i", $phone))
{
echo "<p>Недопустимые символы в номере телефона<br></p>";
}
/* Проверяем правильность ввода капчи */
  if ($captcha == $pr)
  {
/* Формируем сообщение */
$address = "mail@mail.ru";
$sub = "Анкета с сайта";
$mes = "Автор представился как: $name \nТелефон: $phone \nОставил такой E-mail: $email \nМарка авто: $auto \nГод выпуска авто: $year \nПокупал масло: $oil \nНазвание сто: $sto \nДанные чека: $check \nПредложения и пожелания: \n$message";

/* Отправка сообщения */
$verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = windows-1251\r\nFrom:$email");
      if ($verify == 'true')
      {
       echo "Анкета отправлена<br>";

      }

      else 
	  {
	  echo "Анкета не отправлена!<br>";
	  }
  }
  else
  {
  echo "Вы не правильно ввели сумму чисел с картинки <br>";
  }
 

}
else
{
echo "Вы заполнили не все обязательные поля <br>";
}
?>
<br>
<input type="button" value="Назад" onclick="history.back()">


Как мне сделать, что бы кнопка "назад" при правельном заполнении и отправке анкеты была не активной?
Заранее огромное спасибо!

Последний раз редактировалось strike55, 18.11.2011 в 06:38.
Ответить с цитированием
  #6 (permalink)  
Старый 17.11.2011, 14:30
Новичок на форуме
Отправить личное сообщение для strike55 Посмотреть профиль Найти все сообщения от strike55
 
Регистрация: 17.11.2011
Сообщений: 2

Нашёл только вот это: http://jquery-docs.ru/attributes/attr/

Последний раз редактировалось strike55, 17.11.2011 в 14:46.
Ответить с цитированием
  #7 (permalink)  
Старый 17.11.2011, 15:34
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от versus_spb
Долго бился с одной проблемой в IE.
...
Столкнулся с тем, что никак не удавалось устанавливать или убирать disabled у кнопки submit в форме. Никаким способом.
Брехня... Вот работающий у меня в ИЕ8 скрипт.

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function Go() {
	document.getElementById('test').disabled=true;
}
</script>
</head>
<body>
<form>
	<input type='text' />
	<input type='submit' value='Send' id='test' />
	<input type='button' value='Disabled Send' onclick='Go()' />
</form>
</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 17.11.2011, 15:39
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от versus_spb Посмотреть сообщение
Вот пример кода, который показывает данный баг. Проверено в IE 7, 8.

<form id="form1" name="form1" method="post" action="">
	<input type="button" value="toggle disabled" onclick="document.getElementById('button1').disabled = !document.getElementById('button1').disabled;" />
	<input type="submit" name="button1" id="button1" value="Submit" />
</form>



<form id="form1" name="form1" method="post" action="">
	<input type="button" value="toggle disabled" onclick="document.getElementById('button2').disabled = !document.getElementById('button2').disabled;" />
	<input type="hidden" name="button2" id="test_id" />
	<input type="submit" name="button2" id="button2" value="Submit" />
</form>
Тупо копирнул код себе в ИЕ8 и там всё работает...
Ответить с цитированием
  #9 (permalink)  
Старый 17.11.2011, 20:36
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от ksa
Брехня... Вот работающий у меня в ИЕ8 скрипт.
Вы целиком не прочитали, по-моему. Там дело не столько в баге ie, сколько в неправильной организации кода:
Цитата:
Оказалось, что проблемы была вызвана тем, что помимо submit у меня стоял hidden input с таким же именем (ну другим ID). (только не надо спрашивать, зачем, так было удобно).
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #10 (permalink)  
Старый 17.11.2011, 21:51
UDN UDN вне форума
Аспирант
Отправить личное сообщение для UDN Посмотреть профиль Найти все сообщения от UDN
 
Регистрация: 18.06.2009
Сообщений: 55

1) IE свойства id и name, нужны для совместимости со старыми версиями, а не для удобства.
т.е. id и name должны быть равны.
А для работы с коллекциями есть специальный метод document.body.createControlRange()

2) Ваш код не поддерживает кросс-броузерность
3) Код состоит из одних ошибок
document.getElementById('button2') // возвращает первый элемент коллекции

input type="hidden"
form1.button2.disabled!=form1.button2.disabled // далее наложение визуальных эффектов на скрытый элемент

4) Проверено в IE 7, 8 - В вашем коде нет ни одной строки которая включила бы режим IE7,8.
document.documentMode // по умолчанию режим IE5
так что пишите просто в IE (Что для вашего кода не так существенно)

Сообщение от trikadin
Цитата:
Оказалось, что проблемы была вызвана тем, что помимо submit у меня стоял hidden input с таким же именем (ну другим ID). (только не надо спрашивать, зачем, так было удобно).
Если и вам так удобней, тогда откажитесь от поддержки IE
microsoft не подстраивает ПО под пользователей, пользователи сами должны подстраиваются под ПО.

Последний раз редактировалось UDN, 18.11.2011 в 00:35.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Баг Firefox: по F5 перескакивает radio при динамическом добавлении в DOM input Atoll Events/DOM/Window 6 22.06.2010 18:25
Активация кнопки при вводе верного ответа JukiPuki Общие вопросы Javascript 3 08.02.2010 23:12
Смена изображений при нажатии кнопки. Rel60 Общие вопросы Javascript 1 14.09.2009 11:05
Странность при вычислении выражений.. Это баг или фича? krvwd Общие вопросы Javascript 9 28.01.2009 18:04
не работают функции при их вызове(не отображаются кнопки) badfilin Общие вопросы Javascript 0 08.04.2008 20:18