Сериализовать из элемента таблицы, а не всю форму
Попытка сериализовать только элементы из определенной таблицы, но возвращает результат только в том случае, если я делаю все Form
в приведенном ниже коде, я хочу ajax только элементы в tbl2
<form>
<input type="text" id="tb1" name="tbl1"/>
<table name="tbl1">
<tr><td><input type="text" name="tb2"/></td></tr>
</table>
<table name="tbl2">
<tr><td><input type="text" name="tb3"/></td></tr>
<tr><td><input type="text" name="tb4"/></td></tr>
</table>
</form>
код
var params = $("#tbl2").serialize();
var resp = $.ajax({
async: false,
type: "POST",
url: AppRoot + "webhandlers/postback.ashx",
data: params
});
Ответы
Ответ 1
Прежде всего, <table>
не может иметь атрибут name
, и даже если бы он мог, jQuery ID селектор (#
) не будет сравните его.
Если вместо этого вы используете id
(<table id="tbl2">
), он будет работать следующим образом:
var params = $("#tbl2 :input").serialize();
Селектор :input
выбирает все элементы формы (здесь, внутри #tbl2
), это необходимо, потому что serialize()
будет работать только с ними.
Пожалуйста, также просмотрите мою jsFiddle Demo.
Ответ 2
вы не можете serialize
таблицы - этот метод не применяется к этому типу объекта DOM, могут быть сериализованы только формы и поля формы.
Если вы действительно хотите делать то, что вы предлагаете, вам нужен правильный селектор, чтобы выбрать только дочерние элементы tbl2
, которые также являются элементами формы, а затем вам придется сериализовать каждый из них вручную. кто-то сделал это в другом вопросе, здесь: сериализовать без формы?
лучшим способом может быть отключить все элементы формы, которые НЕ находятся в интересующей вас таблице - вам понадобится селектор для выбора всех элементов формы, которые не являются дочерними элементами tbl2
- и Затем сериализуйте форму. отключенные элементы будут опущены.
Ответ 3
вы можете использовать метод serializeArray, который даст вам массив полей ввода и может использоваться с данными.
var params = $("#tbl2 input").serializeArray();