2012-06-11 7 views
1

HTML:Обработка нескольких форм на одной странице

<form method="post" action="action=save&amp;id=239" id="save-form"> 
    <input type="text" value="0" name="views" /> <input type="submit" value="save plz" name="save" /> 
</form> 
<form method="post" action="action=save&amp;id=862" id="save-form"> 
    <input type="text" value="3" name="views" /> <input type="submit" value="save plz" name="save" /> 
</form> 
<form method="post" action="action=save&amp;id=12" id="save-form"> 
    <input type="text" value="2" name="views" /> <input type="submit" value="save plz" name="save" /> 
</form> 

PHP:

if ($_GET["action"] == "save") { 
    if (isset($_GET["id"]) && preg_match("/^\d+$/", $_GET["id"])) { 
     $id = $_GET["id"]; 
     // update view count here 
    } 
} 

JQuery:

$('#save-form').ajaxForm({ 
    beforeSubmit: function() {  
     // 
    }, 
    success: function(data) { 
     // 
    } 
}); 

Я использую этот плагин: http://jquery.malsup.com/form/#html

Я понимаю, сейчас все мои формы разделяют e id save-form. Этот код отлично подходит для первого экземпляра save-form. Но я хочу, чтобы это работало для всех. Что приводит меня к моему основному вопросу:

Как я могу изменить текущий jQuery/HTML для обработки каждой отдельной формы.

В идеале у меня был бы уникальный идентификатор, например save-form-239 и save-form-862. Но я не хочу писать $('#save-form-239') и $('#save-form-262'); для каждой формы .. что я могу сделать?

ответ

5

Даже если я уверен, что решение dbaseman работает нормально, это, как правило, лучше всего к void имеет несколько элементов с одинаковым идентификатором, так как это недопустимо в соответствии с спецификациями HTML.

уборщик решение было бы использовать class="save-form" вместо id="save-form", а затем сделать $('.save-form').ajaxForm(...);

1

Вы можете написать селектор, как это, чтобы получить индивидуальную форму:

$('[id=save-form]').eq(0); 

(с помощью селектора явного атрибута, а не «#» ярлык позволяет JQuery тянуть все элементы с соответствующим ID)

Я думаю, вы хотели бы что-то вроде этого, чтобы обработать каждый вид:

$('[id=save-form]').each(function() { 
    $(this).ajaxForm({ 
     beforeSubmit: function() {  
      // 
     }, 
     success: function(data) { 
      // 
     } 
    }); 
}); 
Смежные вопросы