2010-07-06 2 views
5

У меня есть следующий HTMLПолучить скрытое значение поля JQuery?

<input type="hidden" name="conf1" value="7th IEEE/IFIP International Conference on Embedded and Ubiquitous Computing (EUC-09)"> 
    <input type="hidden" name="conf2" value="IEEE International Symposium on Parallel and Distributed Processsing with Applications"> 
    <input type="hidden" name="conf3" value="jkhga"> 
    <input type="hidden" name="conf4" value="test"> 
    <input type="hidden" name="conf5" value="The 3rd International Conference on Adaptive Business Information Systems (ABIS'09)"> 

    <input type="text" name="published"> 

И я пытаюсь получить значение скрытых полей в массив, используя JQuery. Вот что я пробовал:

var conferences = new Array(); 

     conferences[0] = $('#conf1').val(); 
     conferences[1] =$("[name='conf2']").val(); 
     conferences[2] =$("[name='conf3']").val(); 
     conferences[3] = $("[name='conf4']").val(); 
     conferences[4] =$("[name='conf5']").val();  

Может ли кто-нибудь направить меня на то, как их читать?
Заранее спасибо
Дин

ответ

10

Если вы собираетесь использовать JQuery, вы можете сделать это:

var array = $('input:hidden').map(function() { 
    return this.value; 
}).get(); 

.map() итерацию по коллекции, и помещает возвращаемое значение в объект JQuery.

.get() извлекает массив из объекта jQuery.

3
var conferences = []; 

$('input:hidden[name^="conf"]').each(function() { 
    conferences.push($(this).val()); 
}); 
0

Try ниже кода.

$(...).attr('value'); 

.attr(...): только получение значения объектов на старте (когда создается HTML).
.val(): получает значение свойства объекта, которое может меняться много раз.

+0

Пожалуйста, обратите внимание редактирования ответа объяснить whay '.val()' не работает в то время как '.attr()' работы, чтобы люди могли лучше понять проблему и когда это решение применимо. – Djizeus

0

It looks to me like your code works fine already, за исключением того, что нет #conf1. Все, кажется, написано правильно массив, и может быть легко доступны через conferences[0], conferences[1], и т.д.

Вы могли бы убрать его с трюками JQuery, но то, что у вас есть функциональна, если вы знаете, что у вас будет только 5 конференций ,

2
var array = $.map($('input:hidden'),function(i) { 
    return i.value; 
}); 

Это присвоит массив значений array и немного компактнее, чем при использовании $(selector).map() который возвращает объект JQuery, который затем нужно вызвать get() на возвращать массив.

Demo Here

1
var conferences = new Array(); // object Array 

var conferencesVal = new Array(); // string Array 

$("[type=hidden]").each(function(i,e){ 

    // object array =>altarnatif method 
    conferences.push({name:$(this).attr("id"),value: $(this).val()}); 

    //string array 
    conferencesVal[i]= $(this).val(); 

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