Javascript - Як перевірити, чи встановлено прапорець у jQuery
Мені потрібно перевірити checked властивість прапорця і виконати дію на основі перевіреної властивості за допомогою jQuery.
Наприклад, якщо встановлено прапорець age, то мені потрібно показати текстове поле для введення віку, інакше приховайте текстове поле.
Але наступний код повертає false за замовчуванням:
Як успішно запитати checked властивість?
Це спрацювало для мене:
Де isAgeSelected - ідентифікатор елемента управління.
Крім того, @karim79 answer працює нормально. Я не впевнений, що я пропустив у той час, коли його протестував.
Примітка. Цю відповідь використовує Microsoft Ajax, а не jQuery
Як мені виконати запит на перевірену властивість?
Властивість checked елемента DOM прапорець дасть вам стан checked елемента.
Враховуючи ваш існуючий код, ви можете зробити це:
Однак є більш красивий спосіб зробити це за допомогою toggle :
Використовувати функцію jQuery is():
Використання jQuery > 1.6
Використання нового методу властивостей:
jQuery 1.6 +
jQuery 1.5 і нижче
Будь-яка версія jQuery
Усі кредити відносяться до Xian.
Я використовую це, і це працює абсолютно нормально:
Примітка. Якщо прапорець встановлений, він поверне true або undefined, тому краще перевірте значення "ІСТИНА".
Так як jQuery 1.6, поведінка jQuery.attr() змінилася, і користувачам рекомендується не використовувати її для отримання стану, позначеного елементом. Натомість ви повинні використовувати jQuery.prop() :
Дві інші можливості:
Якщо ви використовуєте оновлену версію jquery, ви повинні піти для методу .prop для вирішення вашої проблеми:
$('#isAgeSelected').prop('checked') поверне true , якщо зазначено, і false , якщо не встановлено. Я підтвердив це, і я зіткнувся з цим питанням раніше. $('#isAgeSelected').attr('checked') і $('#isAgeSelected').is('checked') повертає undefined , що не є гідною відповіддю на ситуацію. Зробіть так, як показано нижче.
Сподіваюся, що це допоможе:) - Дякую.
Використання обробника події Click для якості checkbox є ненадійним, оскільки властивість checked може змінюватися під час виконання самого обробника подій!
В ідеалі ви хочете помістити свій код в обробник події change, наприклад, він запускається щоразу при зміні значення прапорця (незалежно від того, як це робиться).
Спочатку ви отримуєте обидва елементи за їх ідентифікатором. Потім ви призначаєте checkboxe onchange подію функцію, яка перевіряє, чи встановлено прапорець, і відповідним чином встановлює властивість hidden текстового поля віку. У цьому прикладі використовується тернарний оператор.
Ось вам fiddle, щоб перевірити його.
Додавання
Якщо крос-браузерна сумісність є проблемою, я пропоную встановити для властивості CSS display значення none та inline.
Більш повільний, але сумісний із крос-браузером.