Как управлять различными контекстами формы одного и того же элемента формы в одном дереве DOM - PullRequest
0 голосов
/ 23 декабря 2010

Поскольку название моего вопроса может быть вам немного неясно (я старался изо всех сил), вот что я точно пытаюсь сделать.

У меня есть элемент формы (скажем, форма user_info), где такие элементы формы будут генерироваться для разных пользователей с помощью java-скрипта и отображаться на разных вкладках js (пример: вкладки dojo).

как только элементы формы сгенерированы, позже мне нужно реагировать на действия пользователя, выполняемые с различными элементами html, определенными внутри user_info формы. В этом случае мне нужно определить, в каком контексте (в каком элементе формы user_info) работает пользователь. Простейшим примером будет способ получения идентификатора формы, в которой выполняются действия пользователя.

В соответствии с моим пониманием, я не могу просто получить из формы идентификатор, потому что теперь дерево DOM содержит повторяющиеся экземпляры формы того же элемента. Итак, если так или иначе, я мог бы идентифицировать контекст формы на основе действий пользователя над его элементами ввода.

Спасибо.

Ответы [ 2 ]

1 голос
/ 23 декабря 2010

В любом элементе формы вы можете найти форму, содержащую элемент, просто проверив свойство элемента "form".Если вы обрабатываете события, то объект события даст вам цель.Если в ваших формах есть элементы "submit", то в любом случае встроенный браузер будет отправлять только одну уязвимую форму.

edit Например, если у вас есть обработчик для "clickсобытия связаны как-то:

function clickHandler(ev) {
  ev = ev || window.event;
  var theForm = ev.target.form; // find the form from the target element
  if (form) {
    // do whatever you need to do to here
  }
}
0 голосов
/ 24 декабря 2010

Если у вас несколько структур форм с таким количеством тегов <form></form>, сколько имеется пользователей, и у вас есть кнопки действий внутри каждого экземпляра формы

Метод 1
-Вы можете получить родительский элемент формы кнопки действия, которую вы щелкнули, используя код, указанный в этом ответе Поиск идентификатора формы в javascript Он содержит как javascript, так и код jquery.Когда у вас есть соответствующий идентификатор формы, вы можете манипулировать его данными.

Метод 2
- при условии, что вы генерируете элементы форм с использованием javascript, вы, вероятно, назначаете некоторые числа какчасть формы имен.скажем form_22 (для пользователя с идентификатором 22), form_24 и т. д., вы можете назначить те же номера в составе идентификаторов для кнопок действий внутри этих форм, поэтому после генерации и назначения ваши формы будут выглядеть так: -

<form name="user_22">

following are input fields
<input "data1_22">
<input "data2_22">

following are action inputs
<input name="edit_22" id="edit_22" onclick="editForm();" />
<input name="some_other_action_24" id="some_other_action_24" onclick="otherActionForm();" />

</form>

<form name="user_24">

following are input fields
<input "data1_24">
<input "data2_24">


following are action inputs
<input name="edit_24" id="edit_24" onclick="editForm(this);" />
<input name="some_other_action_24" id="some_other_action_24" onclick="otherActionForm();" />

</form>

Таким образом, вы можете подготовить идентификатор формы внутри функций js и работать с данными формы

function editForm(object)
{
   var formNumber = str_replace("edit_","",object.name);
   //Get javascript str_replace from https://github.com/kvz/phpjs/raw/master/functions/strings/str_replace.js
   var formName = "user_"+formNumber;

   //Get form params and do what you want
   document.formName.data1_+formNumber;
   document.formName.data2_+formNumber;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...