jquery .children () селектор: форма в таблице - PullRequest
2 голосов
/ 06 мая 2011

Я думаю, что это должно быть просто - кто-то скажет мне, какую очевидную ошибку я совершаю!

У меня есть простая HTML-форма:

<form action="/api/userattributes" method=get>
<select name=action>
<option>read_by_user</option>
<option>set</option>
<option>delete</option>
</select>
Attrib Name: <input name=name type=text size=20 value="">
Attrib Value: <input name=value type=text size=50 value="">
<br />
<input type=submit name="Go!">
</form>

И простой jqueryфункция, которая хочет коснуться некоторых полей ввода в форме, прежде чем они будут отправлены:

$(function()
{
    $("form").submit(function()
    {
        $(this).children(':input[value=""]').each(
            function() {
                $(this).attr("disabled", "disabled");
        });
        return true; // ensure form still submits
    });
});

Так что все работает отлично.Но если я отформатирую форму с таблицей, моя функция больше ничего не делает.Ну, я подумал, может быть, проблема в том, что дочерние элементы формы являются элементами таблицы (хотя это кажется очень странным), поэтому я попробовал .find () вместо .children (), который снова работает с ванильной версией, но не сверсия таблицы.

Итак, как мне найти поля формы, если моя форма находится в таблице?

1 Ответ

4 голосов
/ 06 мая 2011

Можете ли вы опубликовать свой код table, как я догадался, на каком-то макете таблицы, который вы бы использовали и довольно быстро работающий пример: http://jsfiddle.net/3wCk9/

Примечание. Я обнаружил две ошибки:

  1. Ваш селектор был ':input[value=""]', и я изменил его на 'input[value=""]'
  2. Необходимо использовать find вместо children, как вы подозревали:

Учитывая объект jQuery, который представляет набор элементов DOM, метод .children () позволяет нам искать непосредственных потомков этих элементов в дереве DOM

Источник: http://api.jquery.com/children/

Редактировать:

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

Выиспользовали:

<table>
  <form>
    <tr>
       <td>
         <input>
       </td>
    </tr>
  </form>
</table>

В то время как вы должны были переключить <form> и <table> вокруг (как вы это сделали), чтобы <table> был вложен в form.

Как вы обнаружили, у вас не может быть свободно элементов внутри <table> (все должно быть в строках и столбцах).В результате, хотя кажется, что строки и столбцы находятся внутри form, оказывается, что они вообще не вложены в него, и поэтому не находятся внутри потомков, которые ищет метод find.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...