На самом деле у меня проблема с формой в каждой строке таблицы, с javascript (фактически jquery):
Как сказал Lothre1, «некоторые браузеры в процессе рендеринга закрывают тег формы сразу после объявления, оставляя входные данные вне элемента»
, что делает мои поля ввода вне формы, поэтому я не могу получить доступ к дочерним элементам моей формы через DOM с помощью JAVASCRIPT ..
обычно следующий код JQUERY не будет работать:
$('#id_form :input').each(function(){/*action*/});
// this is supposed to select all inputS
// within the form that has an id ='id_form'
НО приведенный выше пример не работает с отображаемым HTML:
<table>
<form id="id_form"></form>
<tr id="tr_id">
<td><input type="text"/></td>
<td><input type="submit"/></td>
</tr>
</table>
Я все еще ищу чистое решение (хотя использование параметра TR 'id' для обхода DOM решило бы эту конкретную проблему)
грязный раствор будет (для jquery):
$('#tr_id :input').each(function(){/*action*/});
// this will select all the inputS
// fields within the TR with the id='tr_id'
приведенный выше пример будет работать, но он не совсем "чистый", потому что он ссылается на TR, а не на FORM, и требует AJAX ...
РЕДАКТИРОВАТЬ: полный процесс с jquery / ajax будет:
//init data string
// the dummy init value (1=1)is just here
// to avoid dealing with trailing &
// and should not be implemented
// (though it works)
var data_str = '1=1';
// for each input in the TR
$('#tr_id :input').each(function(){
//retrieve field name and value from the DOM
var field = $(this).attr('name');
var value = $(this).val();
//iterate the string to pass the datas
// so in the end it will render s/g like
// "1=1&field1_name=value1&field2_name=value2"...
data_str += '&' + field + '=' + value;
});
//Sendind fields datawith ajax
// to be treated
$.ajax({
type:"POST",
url: "target_for_the_form_treatment",
data:data_string,
success:function(msg){
/*actions on success of the request*/
});
});
таким образом, "target_for_the_form_treatment" должен получать данные POST, как если бы ему была отправлена форма (appart from post [1] = 1, но для реализации этого решения я бы порекомендовал заняться завершающим '&' из вместо data_str).
Мне все еще не нравится это решение, но я вынужден использовать структуру TABLE из-за плагина jTery dataTables ...