2015-06-16 2 views
1

This - это моя скрипка для выбора из 3. Я хочу, чтобы значение выбранного флажка было on, а значение unchecked - значение off. Я пишу значение по умолчанию off и попытался изменить значение отмеченного на on. Любое предложение ценитсяотметьте галочкой флажок и установите флажок в поле «на» jQuery

+1

В будущем просьба включить соответствующий код в вопросе самостоятельно, или еще лучше использовать функцию фрагмент кода StackOverflow в , кнопку '<>' в редакторе. –

ответ

3

Проблема заключается в том if ($("input[name='resolution[]']:checked")) {, $("input[name='resolution[]']:checked") возвращает объект JQuery, который будет содержать все выбранные флажки с именем resolution[]

Вам нужно

$('#res').click(function() { 
    var resolutiontemp = {}; 
    var resolution = []; 
    $("input[name='resolution[]']").each(function() { 
     this.value = this.checked ? 'on' : 'off'; 
     var resolution = $(this).parent().find('span').text(); 
     resolutiontemp[resolution] = this.value; 
    }) 
    resolution.push(resolutiontemp); 
    console.log(JSON.stringify(resolution)); 
}); 

Демо: Fiddle

+0

У меня только один вопрос, почему условие 'if' возвращает статус первого элемента, если у меня есть это в' 'каждом' funtion? просто интересно, поэтому я не буду совершать такую ​​же ошибку. –

+0

@HogRider см. обновление ... в каждом цикле вам нужно использовать 'this', чтобы ссылаться на текущий элемент –

+0

@HogRider http://jsfiddle.net/arunpjohny/qoa94hng/4/ –

2

Использование ниже фрагмента кода для достижения ожидаемого результата.

HTML

<table> 
    <tr> 
     <td> 
      <input type="checkbox" id="res1" name="resolution[]" class="resolution" value="off"/><span>res 1 </span> 

     </td> 
     <td> 
      <input type="checkbox" id="res2" name="resolution[]" class="resolution" value="off"/><span>res 2</span> 

     </td> 
     <td> 
      <input type="checkbox" id="res3" name="resolution[]" class="resolution" value="off"/><span>res 3</span> 

     </td> 
    </tr> 
      <tr> 
       <td colspan="3"><input type="checkbox" id="selecctall" name=""/><span>Select All</span></td> 

      </tr> 
</table> 

JQuery:

$('#selectall').click(function(event) { //on click 
    var resolutiontemp = {},resolution = []; 
    if(this.checked) { 
     $("input[name='resolution[]'").each(function() { 
      this.checked = true; 
      $(this).prop('value','on'); 
      var resolutionval = $(this).val(); 
      var resolution = $(this).parent().find('span').text(); 
      resolutiontemp[resolution] = resolutionval; 
     }); 
    }else{ 
     $("input[name='resolution[]'").each(function() { 
      this.checked = false; 
      $(this).prop('value','off'); 
      var resolutionval = $(this).val(); 
      var resolution = $(this).parent().find('span').text(); 
      resolutiontemp[resolution] = resolutionval; 
     });   
    } 
    resolution.push(resolutiontemp); 
    console.log(JSON.stringify(resolution)); 
}); 

Fiddle Result

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