Добавил поле чекбокс. По умалчанию выставил его помеченным.
Добавил поле 1 и поле 2.
Полю 1 назначил появляться при помеченом чекбоксе. А полю 2 при отключенном.
На выходе поле 2 не появляется вовсе. Поле 1 исчезает появляется при изменении чибокса.
Задача. Как привязать/показывать поле 1 при не помеченном чекбоксе?
м.б. form_alter по форме этого типа материала как то условие проверять на вкл выключенный чибокс? Хотя наверное это не то...
очень надо подскажите.
Не охота делать 2 чибокса для каждого поля...
Комментарии
Подпишусь.
и как сделать так что бы при заполнение поля 1, поля 2 не могло бы заполняться... после смены чекбокса...
а то не понятно зачем мне 2ва заполненных поля на один чекбокс например.
Я как штатный экстрасенс компании, могу позволить предположить что это форма
На основе этого предположения я могу выдвинуть гипотезу об использовании javascript, а именно jQuery для столь мизерных задач, возможно нечто эфемерное типа:
if ($('#checkbox_id').attr('checked')=='checked') {
$('#input_1').show();
$('#input_2').hide();
//часть которая касается второго вопроса (по моему мнению это лишнее)
if ($('#input_2').val()!='') {
$('#input_1').attr('disabled','disabled');
}
} else {
$('#input_2').show();
$('#input_1').hide();
//часть которая касается второго вопроса (по моему мнению это лишнее)
if ($('#input_1').val()!='') {
$('#input_2').attr('disabled','disabled');
}
}
});
Я специально не использовал сокращенные конструкции и цепочки событий jQuery для наглядности.
ну да форма. что скрипт подгрузить... и вопрос прикрепления поля к отключеному чибоксу... ?
Ну без скриптов у нас сейчас никуда не устроиться
Я на каждом своем сайте, в папке с темой создаю один JS файл, подключаю его через файл theme_name.info и в нем пишу все интересующие меня скрипты.
Вроде в этом скрипте все ответы
if ($('#checkbox_id').attr('checked')=='checked') { //Если активный
$('#input_1').show(); //Показывать поле 1
$('#input_2').hide(); //Скрывать поле 2
//часть которая касается второго вопроса (по моему мнению это лишнее)
if ($('#input_2').val()!='') { //Если поле 2 было заполнено ранее
$('#input_1').attr('disabled','disabled'); //Отключить возможность заполнения поля 1
}
} else { //Иначе, если после нажатия checkbox неактивный
$('#input_2').show(); //Показывать поле 2
$('#input_1').hide(); //Скрывать поле 1
//часть которая касается второго вопроса (по моему мнению это лишнее)
if ($('#input_1').val()!='') { //Если поле 1 было заполнено ранее
$('#input_2').attr('disabled','disabled'); //Отключить возможность заполнения поля 2
}
}
});
checkbox_id - а это что за параметр???
непонятно как скрипт к моим полям и моему типу материала привязать...
через селекторы
iNFerNo
checkbox_id - это селектор, он указан как пример, вместо #checkbox_id, #input_2 и т.д. нужно писать id или классы элементов, к которым вы хотите привязать событие, или выполнить над ними действие.
если указываете id, то селектор: #id
если класс, то селектор .class
примерно как в css
не забудьте все это обернуть в
$(document).ready(function(){
//Тут код.
}
вот только хотел привести пример и про $(document).ready(function(){ спросить.
спасибо. буду пробовать.
edit-field-external-source-value - поле сск 3 (чекбокс)
edit-field-link-to-external-source-0-url поле сск 1 (текстовое)
edit-field-internal-source-0-nid-nid - поле сск 2 (текстовое)
это эти селекторы? или что то еще?
да это и есть селекторы
$('#edit-field-external-source-value').click(function(){ //устанавливается событие на нажатие chtckbox'а
if ($('#edit-field-external-source-value').attr('checked')=='checked') { //Если активный
$('#edit-field-link-to-external-source-0-url').show(); //Показывать поле 1
$('#edit-field-internal-source-0-nid-nid').hide(); //Скрывать поле 2
//часть которая касается второго вопроса (по моему мнению это лишнее)
if ($('#edit-field-internal-source-0-nid-nid').val()!='') { //Если поле 2 было заполнено ранее
$('#edit-field-link-to-external-source-0-url').attr('disabled','disabled'); //Отключить возможность заполнения поля 1
}
} else { //Иначе, если после нажатия checkbox неактивный
$('#edit-field-internal-source-0-nid-nid').show(); //Показывать поле 2
$('#edit-field-link-to-external-source-0-url').hide(); //Скрывать поле 1
//часть которая касается второго вопроса (по моему мнению это лишнее)
if ($('#edit-field-link-to-external-source-0-url').val()!='') { //Если поле 1 было заполнено ранее
$('#edit-field-internal-source-0-nid-nid').attr('disabled','disabled'); //Отключить возможность заполнения поля 2
}
}
});
});
чото не очень. сначала по дефолту показывается все что надо а потом когда когда кликаешь какая та муть
а в настройках полей привязывать их к вариантам или условные поля не трогать?
Опишите муть
ну не работает функция описанная в коде.
по дефолту (заданному изначально)
чекбокс с галкой
поле1 показывать
после снятия чибоксов как и положено (по заданому условию ) исчезает и уже больше не появляется а про 2 поле молчу о нем вообще ничо не слышно не видно
так что то началось работать.
я убрал все связи с условными полями.
оставил только чибокс с дефолтынм значением. включеным.
как сделать так что бы вкл по дефолту тоже отрабатывалось в функции?
да я еще код исправил значение чибокса сделал равным 1
ну и поля заполняются... оба.
такой код вот скрывает в принципе после клика мышкой. дефолтно не скрывает
$('#edit-field-external-source-value').click(function(){
if ($('#edit-field-external-source-value').attr('checked')=='1') {
$('#edit-field-link-to-external-source-0-url-wrapper').show();
$('#edit-field-internal-source-0-nid-nid-wrapper').hide();
if ($('#edit-field-internal-source-0-nid-nid-wrapper').val()!='') {
$('#edit-field-link-to-external-source-0-url').attr('disabled','disabled');
}
}
else {
$('#edit-field-internal-source-0-nid-nid-wrapper').show();
$('#edit-field-link-to-external-source-0-url-wrapper').hide();
if ($('#edit-field-link-to-external-source-0-url-wrapper').val()!='') {
$('#edit-field-internal-source-0-nid-nid-wrapper').attr('disabled','disabled');
}
}
});
});
нет, 1 использовать нельзя
у вас ошибка, вы взяли селекторы от wrapper а не от самого input
для скрытия второго поля в дефолтном состоянии просто перед обработчиком события нажатия вставьте:
$('#edit-field-link-to-external-source-0-url-wrapper').hide();
if ($('#edit-field-internal-source-0-nid-nid-wrapper').val()!='') {
эта часть кода проверяет заполненость input, но у вас стоит селектор div'а, у него нет значения val().