2015-06-16 2 views
0

Есть ли способ получить значения всех флажков, даже если они не отмечены?Получить значение флажка, даже если оно не отмечено?

HTML:

<input type="checkbox" name="color[]" value="1"/> 
<input type="checkbox" name="color[]" value="2"/> 
... 

JS:

$("input[name='color[]']").serialize(); 

Что-то, как выше, но я хочу значения, даже если они не проверяются. Возможно, мне нужно сначала поставить их в массив перед сериализацией?

+1

Просто из любопытства, почему вы хотите все значения? – putvande

+0

Если щелкнуть все флажок, мне понадобятся все значения, даже если они не отмечены галочкой. – panthro

+0

@panthro, см. Мой обновленный ответ, который позволяет избежать изменения исходного состояния флажка. – AmmarCSE

ответ

2

Простое решение кажется , поэтому:

var serializedValues = $('input[name="color[]"]').map(function(i, e) { 
 
    return encodeURIComponent(e.name) + "=" + encodeURIComponent(e.value); 
 
}).get().join("&"); 
 
snippet.log(serializedValues);
<input type="checkbox" name="color[]" value="1" /> 
 
<input type="checkbox" name="color[]" value="2" /> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script> 
 
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> 
 
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

Это предполагает, что вы действительно хотите, тот же вывод, что seralize даст вам.

+0

Мне жаль, просто? Вы делаете это вручную! :) Теперь, лучшая производительность, да, absolutley – AmmarCSE

+0

@AmmarCSE: Что, это не просто? ;-) * (Да, это было своего рода перепродажа ...) * –

2
  1. Clone них, чтобы избежать изменения первоначального состояния флажков
  2. Установить клонированные элементы проверены истинной
  3. Serialize

document.write($('input[name="color[]"]').clone().prop('checked', true).serialize());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script> 
 
<input type="checkbox" name="color[]" value="1" /> 
 
<input type="checkbox" name="color[]" value="2" />

+0

dont никогда не использовать document.write. – NCA

+0

@NCA, я использую только для демонстрационных целей, поэтому читатели не должны открывать консоль или получать раздражающее предупреждение. – AmmarCSE

+1

@NCA: Было бы неплохо, если бы они когда-либо обходили [реализацию этой функции фрагментов] (http: // meta. stackexchange.com/q/239706/134069), не так ли? Тогда у людей не было бы причин использовать 'document.write' в ответах ... –

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