2015-12-03 2 views
1

checkbox не проверяется на javascript?

function handleCheckboxClick(event){ 
 

 
    if(document.getElementById(event.target.id).checked){ 
 

 
     document.getElementById(event.target.id.concat("_visible")).setAttribute("checked", "true"); 
 
     console.log(document.getElementById(event.target.id.concat("_visible"))); \t \t  \t \t \t \t  \t \t 
 
    } 
 
} 
 

 
var requiredCheckboxes = document.getElementsByClassName("checkbox_required"); 
 

 
for (var i = 0, max = requiredCheckboxes.length; i < max; i++){ 
 
    requiredCheckboxes[i].addEventListener('click', handleCheckboxClick); \t \t  
 
}
<table>  \t \t \t 
 
\t <tr> 
 
\t \t <th> 
 
\t \t \t Property 
 
\t \t </th> 
 
\t \t <th> 
 
\t \t \t Visible 
 
\t \t </th> 
 
\t \t <th> 
 
\t \t \t Required 
 
\t \t </th> 
 
\t </tr> 
 
\t 
 
\t <tr> 
 
\t \t <td> 
 
\t \t \t Email 
 
\t \t </td> 
 
\t \t <td> 
 
\t \t \t <input type="hidden" name="_email_visible" /><input type="checkbox" name="email_visible" id="donation_email_visible" /> 
 
\t \t </td> \t \t \t \t \t \t \t \t \t \t 
 
\t \t <td> 
 
\t \t \t <input type="hidden" name="_email" /><input type="checkbox" name="email" class="checkbox_required" id="donation_email" /> 
 
\t \t </td> 
 
\t </tr> 
 
\t 
 
</table>

Во-первых, нажмите на требуемый флажок для электронной почты. Как и ожидалось, видимая коробка также проверяется. Теперь отмените видимое поле и установите флажок «Обязательный», соответствующий электронной почте, которая будет поле для проверки по электронной почте. Теперь снова щелкните по нужному флажку для электронной почты, видимый флажок не будет проверен. Итак, вот где моя дилемма. В чем причина этого второго раза при нажатии на требуемый, почему видимое поле не отмечено? Я ценю вашу помощь! Благодаря!

+4

'document.getElementById (event.target.id)' - это действительно длинный извилистый способ сказать «event.target» – Quentin

ответ

6

checkedатрибут определяет умолчанию состояние флажка. Изменение его с помощью JS изменит только текущее значение, если пользователь не изменил его.

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

т.е.

Изменить любые случаи setAttribute("checked", "checked") (NB: true не является допустимым значением для этого атрибута), чтобы checked = true и любые случаи removeAttribute("checked") к checked = false.

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