JavaScript доступ к элементам формы с использованием document.forms []. Elements [] - PullRequest
0 голосов
/ 27 апреля 2010
var loc_name = document.forms['create_<?php echo(htmlspecialchars($window_ID)); ?>'].elements['location_name'];
alert(loc_name);

Это просто дает мне сообщение 'undefined'

где как ...

var loc_name = document.forms['create_<?php echo(htmlspecialchars($window_ID)); ?>'];
alert(loc_name);

Дает мне объект бизнеса.

Я только что все понял неправильно? Что такое «правильный» способ доступа к этому элементу формы. Элемент формы имеет правильный name и id, идентификатор похож, но не тот.

HTML

<input type="button" name="create_location" value="Create" onclick="
var pre_row_was = $('#pre_form_row_1').innerHTML;
$('#pre_form_row_1').innerHTML = '&lt;td colspan=\'3\'&gt;Validating...&lt;/td&gt;';
var loc_name = document.forms['create_1'].elements['location_name'];
alert(loc_name);
if(loc_name.value == '') { 
  alert('You can\'t leave the room name blank');
  loc_name.focus(); loc_name.value = 'Enter a name';
  $('#pre_form_row_1').innerHTML = pre_row_was; return false;
}
if(loc_name.value == 'Enter a name') {
  alert('You must enter a room name first'); loc_name.focus();
  $('#pre_form_row_1').innerHTML = pre_row_was;
  return false;
}
$('#pre_form_row_1').innerHTML = pre_row_was;
Window_manager.new_window().load_xml('location/create.php?location_name=' + loc_name.value).display();">

попытался отформатировать его, чтобы его было легче читать.

1 Ответ

2 голосов
/ 27 апреля 2010

Ваш HTML-код недействителен.

Элемент tr не может иметь дочернего элемента form, а элемент form не может иметь дочернего элемента td.

Браузеры исправляют эту ошибку различными способами, в том числе (если я правильно помню), перемещая элемент формы после таблицы, оставляя все остальное на своем месте.

Начните с действительного документа, прежде чем пытаться получить доступ к DOM с помощью JS.

При смешивании форм и таблиц вы можете поместить всю таблицу в форму или всю форму в ячейку.

Еще одна проблема, с которой вы столкнулись, - это попытка изменить innerHTML строки таблицы. Это сломается во многих версиях Internet Explorer. Никогда не изменяйте биты таблицы с помощью innerHTML.

...