Javascript.RU

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

Не удаляется полностью input в Firefox
Привет всем. Помогите разобраться с проблемой. Если создают новое поле в форме, и потом удаляю, то это поле удаляется с экрана, но при обращении к нему в Firefox и GCrome оно существует, в др. браузерах нормально работает. Чтоб было понятнее приведу код:

<html>
<head>


<style type="text/css">

.t_link { text-decoration: underline; color: #777; cursor: pointer; }
</style>

</head>
<body>

<form name="forma1">
тут форма.

<div id="box_input"></div>

</form>

<div>

<span onclick="create_input();" class="t_link">создать поле</span> 
<span class="t_link" onclick="delete_input();">удалить поле</span> 
<span class="t_link" onclick="check_input()">проверить поле</span> 

</div>

<script type="text/javascript">

function create_input()
  {
   var t = "";
   
   t += " поле 1 <input name='pf_1' type='text' value=''> ";
   t += " поле 2 <input name='pf_2' type='text' value=''> ";
   
   document.getElementById("box_input").innerHTML = t;
  }

function delete_input()
  {
   var t = "";
   
   //t += " поле 1 <input name='pf_1' type='text' value=''> ";
   //t += " поле 2 <input name='pf_2' type='text' value=''> ";
   
   document.getElementById("box_input").innerHTML = t;
  }

function check_input()
  {
   var t = "";
   
   obj_pf_1 = document.forms.forma1.pf_1;
   obj_pf_2 = document.forms.forma1.pf_2;
   
   if ( obj_pf_1 )
     {
      alert("v1 = "+obj_pf_1.value);
     }
    else
      {
       alert("v1 нет");
      }
   
   if ( obj_pf_2 )
     {
      alert("v2 = "+obj_pf_2.value);
     }
    else
      {
       alert("v2 нет");
      }
   
  }



</script>

</body>
</html>


если запустить этот код в браузере, нажать на создать поле, появятся два текстовых поля. заполнить их. потом нажать проверить поле, будет отображено содержимое полей. Если нажать удалить поле, то поля удаляться с экрана, но если нажать на проверить поле, то в Firefox и GChrome будет отображено значение этих полей, как будто они и не удалялись. В опере и Ie нормально работает.
Может кто знает как можно удалить полностью эти поля.
Так же удалял эти поля с помощью методов DOM, тоже самое. Не знаю что и делать.
Ответить с цитированием
  #2 (permalink)  
Старый 02.12.2011, 23:46
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от xcode
Может кто знает как можно удалить полностью эти поля.
Тебе поможет
http://www.fpublisher.ru/documentati...s#hremovechild
Ответить с цитированием
  #3 (permalink)  
Старый 03.12.2011, 22:35
Новичок на форуме
Отправить личное сообщение для xcode Посмотреть профиль Найти все сообщения от xcode
 
Регистрация: 02.12.2011
Сообщений: 8

Если бы так просто.Я удалял с помощью метода removeChild , результат то же самый - с экрана убирается поле, а вот при обращении obj_pf_2 = document.forms.forma1.pf_2; - объект существует и есть значение поля. Такая фишка у Mozilla и Гугл Хром. Похоже на баг, но может как-то это решается.
Ответить с цитированием
  #4 (permalink)  
Старый 04.12.2011, 17:43
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от xcode
Я удалял с помощью метода removeChild , результат то же самый
Не верю... (с) Станиславский

<!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 Add() {
	if (document.getElementById('i1')) {
		return false;
	};
	document.getElementById('test').innerHTML="<input id='i1' type='text' value='' />";
};
function Delete() {
	var o=document.getElementById('i1');
	if (o) {
		document.getElementById('test').removeChild(o);
	};
};
</script>
</head>
<body>
<div id='test'></div>
<input type='button' value='Add' onclick='Add()' />
<input type='button' value='Delete' onclick='Delete()' />
<input type='button' value='Test' onclick='alert(document.getElementById("i1"))' />
</body>
</html>


Элемента после удаления нет...
Ответить с цитированием
  #5 (permalink)  
Старый 05.12.2011, 09:55
Новичок на форуме
Отправить личное сообщение для xcode Посмотреть профиль Найти все сообщения от xcode
 
Регистрация: 02.12.2011
Сообщений: 8

Все правильно если находить поле по id то работает. А вот если находить поле через коллекцию document.forms.имя_формы.имя_поля то не работает.

<!DOCTYPE html>
<html>
<head>

<style type="text/css">
</style>
<script type="text/javascript">
function Add() {
	if (document.forms.forma1.i1) {
		return false;
	};
	document.getElementById('test').innerHTML="<input name='i1' type='text' value='' />";
};
function Delete() {
	var o=document.forms.forma1.i1;
	if (o) {
		o.parentNode.removeChild(o);
        //document.getElementById('test').removeChild(o);
	};
};
</script>
</head>
<body>
<form name='forma1'>
<div id='test'></div>
<input type='button' value='Add' onclick='Add()' />
<input type='button' value='Delete' onclick='Delete()' />
<input type='button' value='Test' onclick='alert(document.forms.forma1.i1)' />
</form>
</body>
</html>


А мне нужно именно через коллекцию находить поле формы.
ЗЫ. проблему эту я уже обошел, но коряво это все получилось. Хочется все-таки по нормальному сделать

Последний раз редактировалось xcode, 05.12.2011 в 09:58.
Ответить с цитированием
  #6 (permalink)  
Старый 05.12.2011, 10:04
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от xcode
А мне нужно именно через коллекцию находить поле формы.
Никакой разницы не вижу...

<!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 Add() {
	if (document.getElementsByName('i1').length>0) {
		return false;
	};
	document.getElementById('test').innerHTML="<input name='i1' type='text' value='' />";
};
function Delete() {
	var o=document.getElementsByName('i1')[0];
	if (o) {
		document.getElementById('test').removeChild(o);
	};
};
</script>
</head>
<body>
<div id='test'></div>
<input type='button' value='Add' onclick='Add()' />
<input type='button' value='Delete' onclick='Delete()' />
<input type='button' value='Test' onclick='alert(document.getElementsByName("i1")[0])' />
</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 05.12.2011, 10:42
Новичок на форуме
Отправить личное сообщение для xcode Посмотреть профиль Найти все сообщения от xcode
 
Регистрация: 02.12.2011
Сообщений: 8

Так работает! Спасибо
А через коллекцию, как я писал выше, только у меня не работает или у вас тоже не работает? Хочется уже знать точно.
Ответить с цитированием
  #8 (permalink)  
Старый 05.12.2011, 10:50
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от xcode
А через коллекцию
Я такой синтаксис не использую давным давно...
Ответить с цитированием
  #9 (permalink)  
Старый 05.12.2011, 11:46
Новичок на форуме
Отправить личное сообщение для xcode Посмотреть профиль Найти все сообщения от xcode
 
Регистрация: 02.12.2011
Сообщений: 8

Сообщение от ksa Посмотреть сообщение
Я такой синтаксис не использую давным давно...
Почему? Я использую такой синтаксис. Мне кажется очень удобно для проверки данных в полях формы, да и вообще для работы с формой. Может быть несколько форм на странице, и так они спокойно разделяются
Ответить с цитированием
  #10 (permalink)  
Старый 05.12.2011, 11:50
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от xcode
Мне кажется очень удобно
У меня обратное мнение... Такой синтаксис применялся на заре создания хтмля...

Сообщение от xcode
Может быть несколько форм на странице, и так они спокойно разделяются
Нужно правильно использовать атрибуты:
- id
- name
- class
И будет тебе счастие...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как стереть содержимое поля INPUT по клавише Esc? bug FireFox? Маэстро Firefox/Mozilla 4 20.06.2011 15:55
Opera не выполняет style.fontSize=... в поле input Маэстро Opera, Safari и др. 6 20.06.2011 12:03
Баг Firefox: по F5 перескакивает radio при динамическом добавлении в DOM input Atoll Events/DOM/Window 6 22.06.2010 18:25
Копирование из одного input в другой input bar-boss Общие вопросы Javascript 7 08.04.2008 19:10
Разным элементам input - разное форматирование. Как? eclipse (X)HTML/CSS 1 25.10.2007 13:55