2010-11-27 6 views
53

Есть ли способ заполнить все данные из определенной формы? скажем, некоторые вещи, как это:jquery получить все данные по конкретной форме

<form id="unique00"> 
    <input type="text" name="whatever" id="whatever" value="whatever" /> 
    <div> 
    <input type="checkbox" name="whatever" id="whatever" value="whatever" /> 
    </div> 
    <table><tr><td> 
    <input type="hidden" name="whatever" id="whatever" value="whatever" /> 
    <input type="submit" value="qweqsac" /> 
    </td></tr></table> 
</form> 
<form id="unique01"> 
    <div> 
    <input type="text" name="whatever" id="whatever" value="whatever" /> 
    <input type="checkbox" name="whatever" id="whatever" value="whatever" /> 
    </div> 
    <table><tr><td> 
    <input type="hidden" name="whatever" id="whatever" value="whatever" /> 
    </td></tr></table> 
    <select>blah...</select> 
    <input type="submit" value="qweqsac" /> 
</form> 
etc forms... forms... 

* примечание: каждая форма может иметь различное количество входных и типа, а также другой HTML структуру

так есть ли способ для заполнения ввода от определенного form id? например, если я нажму кнопку «Отправить» с определенного идентификатора формы, тогда jquery заполнит для меня весь вход в пределах этого идентификатора формы. в настоящее время, что я делаю это так:

$("form").submit(function(){ return validateForm($(this)) }); 
function validateForm(form){ 
var retVal = true; 
var re; 
$.each(form.serializeArray(), function(i, field) { 
    var input = $('input[name='+field.name+']'); 
    field.value = $.trim(field.value); 
    switch(field.name){ 
    case "name" : 
     and another cases... 
     } 
    }) 
} 

, которая была работа, , но в этом случае, я только получить field.name и field.value, а на самом деле то, что я хочу, я хочу jquery для каждого элемента ввода, поэтому я могу получить доступ к их css, id, имени и даже анимировать те элементы ввода

есть ли способ для этого?

, пожалуйста, дайте мне знать и заранее заблаговременно! AnD

ответ

124

Для перебора всех входов в форме, вы можете сделать это:

$("form#formID :input").each(function(){ 
var input = $(this); // This is the jquery object of the input, do what you will 
}); 

Это использует JQuery :input selector, чтобы получить все типы входов, если вы просто хотите текст, который вы можете сделать:

$("form#formID input[type=text]")//... 

т.д.

+1

Это работа, за исключением выбора варианта? – AnD 2010-11-27 20:18:08

+3

Я думаю: ввод работает для этого, но в противном случае вы могли бы сделать: `$ (" form # formID input [type = text], form # formID select ")` – TJB 2010-11-27 21:29:41

16

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

$('#formId input, #formId select').each(
    function(index){ 
     var input = $(this); 
     alert('Type: ' + input.attr('type') + 'Name: ' + input.attr('name') + 'Value: ' + input.val()); 
    } 
); 

Код ниже позволяет получить детали элементов из всех форм, место на странице загрузки,

$('form input, form select').each(
    function(index){ 
     var input = $(this); 
     alert('Type: ' + input.attr('type') + 'Name: ' + input.attr('name') + 'Value: ' + input.val()); 
    } 
); 

Код ниже позволяет получить детали элементов, которые являются местом в страница загрузки, даже если элемент не размещать внутри тега,

$('input, select').each(
    function(index){ 
     var input = $(this); 
     alert('Type: ' + input.attr('type') + 'Name: ' + input.attr('name') + 'Value: ' + input.val()); 
    } 
); 

ПРИМЕЧАНИЕ: мы добавляем больше имя тега элемента, что нам нужно в объекте список, как ниже,

Example: to get name of attribute "textarea", 

$('input, select, textarea').each(
    function(index){ 
     var input = $(this); 
     alert('Type: ' + input.attr('type') + 'Name: ' + input.attr('name') + 'Value: ' + input.val()); 
    } 
); 
1

Использование HTML-форм «элементы» атрибут:

$.each($("form").elements, function(){ console.log($(this)); }

Теперь нет необходимости предоставлять такие имена, как «вход, текстовое поле, выберите ...» и т.д.

Смежные вопросы