Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.04.2014, 18:17
Кандидат Javascript-наук
Отправить личное сообщение для cha0s Посмотреть профиль Найти все сообщения от cha0s
 
Регистрация: 21.10.2013
Сообщений: 125

Объясните вопрос про Checkbox
$(function (){
$('[position_title ^= 5] label').click(function (){

$('[position_title ^= 5] input:checkbox:checked').each(function(i) {
alert('otme4eno');																  	   
});							
});
});


Есть такой код, при клике на label checkboxa, checkbox отмечается, но почему input:checkbox:checked не срабатывает сразу на это? у меня например 6 чекбоксов, я отмечаю один 0 реакции, отмечаю другой, и тут о чудо он увидел то что было отмечено в первый раз и вывел мне сообщение "отмечено", WTF? объясните почему он это сразу не может определить?
Ответить с цитированием
  #2 (permalink)  
Старый 28.04.2014, 19:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

cha0s,
когда кликнули первый раз ещё нет :checked
Ответить с цитированием
  #3 (permalink)  
Старый 28.04.2014, 22:59
Кандидат Javascript-наук
Отправить личное сообщение для cha0s Посмотреть профиль Найти все сообщения от cha0s
 
Регистрация: 21.10.2013
Сообщений: 125

Сообщение от рони Посмотреть сообщение
cha0s,
когда кликнули первый раз ещё нет :checked
типа чтоб это обойти надо самому вешать ....prop("checked", true); на чекбокс? мне надо чтоб он видел сразу что отмечено чтоб сработало :checked
Ответить с цитированием
  #4 (permalink)  
Старый 28.04.2014, 23:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

cha0s,
вопрос что вы хотите сделать далее?
Ответить с цитированием
  #5 (permalink)  
Старый 28.04.2014, 23:36
Кандидат Javascript-наук
Отправить личное сообщение для cha0s Посмотреть профиль Найти все сообщения от cha0s
 
Регистрация: 21.10.2013
Сообщений: 125

$(function (){
	$('[position_title ^= 5] label').click(function (){
var str = '';
$("#fiveselect").html(str);
$('[position_title ^= 5] input:checkbox:checked').each(function(i) {
	    var text = $(this).next('label').text();
	    if (text.indexOf('(-$')+1) {
        	text = text.substring(0,text.indexOf('('));
                str += text + " ,";
            }																  	   
});	
$("#fiveselect").append(str);						
});
});


Вот полный код, особо можно не вдаваться в подробности фишка такая, что я делаю строку из текста который в label, из-за того что он не может сразу чухнуть что элемент уже :checked когда пользователь тыркнул ломается вся эта строка, то есть код рабочий но он все время на шаге назад... я выбираю уже 2-ой чекбокс отмечаю, а он тока делает строку из предыдущего... НУ то есть он не может сразу определить то что checked уже checked... со 2-ой попытки только видит... мне типа ему надо насильно сделать как-то checked для кода? чтоб он понял это сразу и выполнял цикл уже зная что элемент этот checked... а то что-то не понимаю...

Вот скрин

видишь строка сверху SELECTED: туда вставляются отмеченные checkbox.... я уже отметил 2-ой чекбокс, и только тогда он в строку добавил первый мой отмеченный.... если выберу 3-тий то добавит только 2-ой.... ТО ЕСТЬ он на ШАГ отстает постоянно... то есть первый шаг :checked все время false, хотя галочка там стоит(сами checkbox display:none label сделаны как кнопки=)

Последний раз редактировалось cha0s, 28.04.2014 в 23:43.
Ответить с цитированием
  #6 (permalink)  
Старый 28.04.2014, 23:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

cha0s,
код checkbox-ов с label можно?
Ответить с цитированием
  #7 (permalink)  
Старый 29.04.2014, 00:11
Кандидат Javascript-наук
Отправить личное сообщение для cha0s Посмотреть профиль Найти все сообщения от cha0s
 
Регистрация: 21.10.2013
Сообщений: 125

Да генерирует сам движок их, с моими не большими модификациями.

<div id="results5"><div position_title="5" id="option-656" class="option checkbox">
<label style="display:none;">discounts:</label>                                                                 									
<div class="fields">
<input style="display:none;" type="checkbox" name="option[656][]" value="6142" id="option-value-6142">
<label class="spancheckbox" style="float:left; margin-bottom:5px;" for="option-value-6142">cardstock layers(-$0.50)</label>
<br>
<input style="display:none;" type="checkbox" name="option[656][]" value="6149" id="option-value-6149">
<label class="spancheckbox" style="float:left; margin-bottom:5px;" for="option-value-6149">belly band(-$0.25)</label>
<br>
<input style="display:none;" type="checkbox" name="option[656][]" value="6150" id="option-value-6150">
<label class="spancheckbox" style="float:left; margin-bottom:5px;" for="option-value-6150">ribbon(-$0.50)</label>
<br>
<input style="display:none;" type="checkbox" name="option[656][]" value="6151" id="option-value-6151">
<label class="spancheckbox" style="float:left; margin-bottom:5px;" for="option-value-6151">pocketfold name tag(-$0.15)</label>
<br>
<input style="display:none;" type="checkbox" name="option[656][]" value="6152" id="option-value-6152">
<label class="spancheckbox" style="float:left; margin-bottom:5px;" for="option-value-6152">envelope liner(-$0.25)</label>
<br>
<input style="display:none;" type="checkbox" name="option[656][]" value="6153" id="option-value-6153">
<label class="spancheckbox" style="float:left; margin-bottom:5px;" for="option-value-6153">address wrap(-$0.50)</label>
<br>
</div>
</div></div>

Последний раз редактировалось cha0s, 29.04.2014 в 00:27.
Ответить с цитированием
  #8 (permalink)  
Старый 29.04.2014, 00:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

cha0s,

<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  label{
    background: #228B22;

  }
  input:checked + label {
     background: #FF3D3D;
  }

  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
   $(function ()
{
   	$('[position_title ^= 5] label').click(function (){
var str = [];
var checked = $(this).prev().is(':checked');
var inputs = $('[position_title ^= 5] input:checkbox:checked');
inputs = checked ? inputs.not($(this).prev()) : inputs.add($(this).prev())
inputs.each(function(i) {
	    var text = $(this).next('label').text();
	    if (text.indexOf('(-$')+1) {
        	text = text.substring(0,text.indexOf('('));
                str.push(text);
            }
});
$("#fiveselect").text(str.join(', '));
});

})
  </script>
</head>

<body>
  <div id="fiveselect"></div>
  <div id="results5"><div position_title="5" id="option-656" class="option checkbox">
<label style="display:none;">discounts:</label>
<div class="fields">
<input style="display:none;" type="checkbox" name="option[656][]" value="6142" id="option-value-6142">
<label class="spancheckbox on" style="float:left; margin-bottom:5px;" for="option-value-6142">cardstock layers(-$0.50)</label>
<br>
<input style="display:none;" type="checkbox" name="option[656][]" value="6149" id="option-value-6149">
<label class="spancheckbox" style="float:left; margin-bottom:5px;" for="option-value-6149">belly band(-$0.25)</label>
<br>
<input style="display:none;" type="checkbox" name="option[656][]" value="6150" id="option-value-6150">
<label class="spancheckbox" style="float:left; margin-bottom:5px;" for="option-value-6150">ribbon(-$0.50)</label>
<br>
<input style="display:none;" type="checkbox" name="option[656][]" value="6151" id="option-value-6151">
<label class="spancheckbox" style="float:left; margin-bottom:5px;" for="option-value-6151">pocketfold name tag(-$0.15)</label>
<br>
<input style="display:none;" type="checkbox" name="option[656][]" value="6152" id="option-value-6152">
<label class="spancheckbox on" style="float:left; margin-bottom:5px;" for="option-value-6152">envelope liner(-$0.25)</label>
<br>
<input style="display:none;" type="checkbox" name="option[656][]" value="6153" id="option-value-6153">
<label class="spancheckbox on" style="float:left; margin-bottom:5px;" for="option-value-6153">address wrap(-$0.50)</label>
<br>
</div>
</div></div>

</body>

</html>
Ответить с цитированием
  #9 (permalink)  
Старый 29.04.2014, 01:03
Кандидат Javascript-наук
Отправить личное сообщение для cha0s Посмотреть профиль Найти все сообщения от cha0s
 
Регистрация: 21.10.2013
Сообщений: 125

Спасибо большое! сча буду разбираться что там изменилось в JS от того что было
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
еще один вопрос про кнопки и события f0rzik Общие вопросы Javascript 15 19.01.2013 23:19
Вопрос про change vitaly63 Общие вопросы Javascript 1 24.12.2012 10:50
Глупый вопрос про if then. Irish.Tippler Общие вопросы Javascript 9 26.07.2012 12:32
вопрос про возможности JS для рисования и анимации macdack Библиотеки/Тулкиты/Фреймворки 3 15.07.2011 00:13
Вопрос: И опять про offsetLeft... sigurd Общие вопросы Javascript 11 04.10.2010 14:06