не работают скрипты на планшете и телефоне.
Есть скрипт:
$("#sdelka").click(function() { if($( "#sdelka" ).val() == 0){ $( ".hd1").css('display', 'block'); $( ".hd2").css('display', 'none'); $('#pp').attr('disabled',false); }else{ $('#pp').attr('disabled',false); $( ".hd2").css('display', 'block'); $( ".hd1").css('display', 'none'); } }); это зависимость двух select <div class="col-md-3 col-sm-6 col-xs-12"> <select id="sdelka" class="sel" name="rent_buy"> <option value=""><?php echo Yii::t('common', 'Sale/Rent')?></option> <option value="0"><?php echo Yii::t('common', 'Rent')?></option> <option value="1"><?php echo Yii::t('common', 'Sale')?></option> </select> </div> <div class="col-md-3 col-sm-6 col-xs-12"> <select disabled="disabled" id="pp" class="sel" name="type"> <option value=""><?php echo Yii::t('common', 'Property type')?></option> <option class="hd1" value="1"><?php echo Yii::t('common', 'Villa/Home')?></option> <option class="hd1" value="2"><?php echo Yii::t('common', 'Condo/Apartments')?></option> <option class="hd1" value="3"><?php echo Yii::t('common', 'Bungalo')?></option> <option class="hd2" value="4"><?php echo Yii::t('common', 'Villa/Home')?></option> <option class="hd2" value="5"><?php echo Yii::t('common', 'Condo/Apartments')?></option> <option class="hd2" value="6"><?php echo Yii::t('common', 'Project')?></option> <option class="hd2" value="7"><?php echo Yii::t('common', 'Commercial')?></option> <option class="hd2" value="8"><?php echo Yii::t('common', 'Land')?></option> </select> </div> кто что подскажет? на компьютере все работает. рабочий пример тут: http://site.artem55555p.ru/ru/main/index вот эти два select http://c2n.me/3Mo4c1n |
Во-первых так:
$("#sdelka").change(function() { var v = +this.value; $( ".hd1").css('display', ['block', 'none'][v]); $( ".hd2").css('display', ['none', 'block'][v]); //$('#pp').attr('disabled',false);$('#pp').prop('disabled', false); зачем это задавать, если и в противном случае тоже false, ошибки нет, может так: $('#pp').prop('disabled', v); //то есть все таки изменяет состояние? }); Во-вторых что не работает? |
у менЯ значение 0 и 1
вы скинули код, теперь если выбрать где значение 1 селект имеет disabled |
на телефоне и планшете это не работало
|
Цитата:
Вы посмотрите на свой код, у вас в обеих условиях $('#pp').attr('disabled',false);, а мне тем боле откуда знать, чего вам вообще нужно. |
мне нужно чтобы при выборе 1 или 0 disabled убирался
|
Цитата:
Если любой выбор в этом списке делает доступным второй список, который по умолчанию, к примеру, недоступен, то сразу, без всяких условий и прописывайте disabled false. И может убрать опцию с пустым значением? Не видно, чтобы она что-то определяла. |
мне нужно чтобы при выборе 1 или 0 disabled убирался. выбрал 0 в select отображены .hd1 поля с этим классом. выбрал 1 с .hd2
|
var v = +this.value; $( ".hd1").css('display', ['block', 'none'][v]); $( ".hd2").css('display', ['none', 'block'][v]); if(v == 0){ $('#pp').prop('disabled', v); } так сделал |
А если не равно 0, тогда что?
|
ну сейчас работает как надо site.artem55555p.ru и на телефоне работает все.
|
может у кого-то есть другие варианты?
|
Цитата:
|
ну я делал проверку на 1, но оно и так работало...
|
ну сейчас на телефоне работает, а на планшете нет(((
|
Цитата:
Цитата:
|
у меня change, а не click
$("#sdelka").change(function() { var v = +this.value; $( ".hd1").css('display', ['block', 'none'][v]); $( ".hd2").css('display', ['none', 'block'][v]); if(v == 0){ $('#pp').prop('disabled', v); } }); к сожалению планшет у заказчика, у меня нет планшета и я не могу отследить это..( |
может кто-то что-то подсказать?
|
Цитата:
|
ну сецчас, этот скрипт на планшете не работает. а на телефоне работает. вы можете подсказать в чем проблема?
|
Цитата:
|
все поля сразу показываются
http://clip2net.com/s/3Mpb29C т.е. $( ".hd1").css('display', ['block', 'none'][v]); $( ".hd2").css('display', ['none', 'block'][v]); это сразу block |
Цитата:
Список по умолчанию должен быть недоступен, а на самом деле как? |
а как тогда?
$("#sdelka").change(function() { var v = +this.value; $( ".hd1").css('display', ['block', 'none'][v]); $( ".hd2").css('display', ['none', 'block'][v]); $('#pp').prop('disabled', v); }); если так, то при выборе: <select id="sdelka" class="sel" name="rent_buy"> <option value=""><?php echo Yii::t('common', 'Sale/Rent')?></option> <option value="0"><?php echo Yii::t('common', 'Rent')?></option> <option value="1"><?php echo Yii::t('common', 'Sale')?></option> </select> это если выбираю: <option value="1"><?php echo Yii::t('common', 'Sale')?></option> то все равно disabled |
а value трогать нельзя. только так, пусто, 0 и 1
|
Цитата:
Но если первый список управляет доступностью второго, а по умолчанию надо полагать "по жалобе" он должен быть недоступен, то: <select id="pp" ..... disabled> |
не, <select id="sdelka" class="sel" name="rent_buy"> тут не должно быть disabled он всегда доступен. меняется второй селект
|
ну так это и стоит же.. disabled="disabled"
|
вот, http://site.artem55555p.ru/ru здесь все работает нормально на пк, и телефоне. а на планшете не хочет.
|
Сдается мне, что вы путаете понятие disabled с понятиями block и none.
|
вы предлагаете disabled="disabled" изменить на disabled просто??
|
Цитата:
Пофигу, что будет написано в значении данного атрибута, хоть абвгд, хоть пустая строка, хоть просто disabled -элемент будет недоступен. Понимаете - недоступен! То есть по отношению к списку его нельзя будет раскрыть. А display: block/none, это сделать видимым/невидимым элемент списка. Проблемы с чем на планшете: а) - не зависимо от установки disabled список все равно можно раскрыть (что вряд ли), б) - не зависимо от выбора в первом списке все опции второго списка видны (что скорее всего)? И коли второе, то браузер на планшете игнорирует данные определения. |
И коли второе, то браузер на планшете игнорирует данные определения.
Ответить с цитированием - ну да:( я и спрашиваю как это исправить можно)))) |
Может, так?
<div class="col-md-3 col-sm-6 col-xs-12"> <select id="sdelka" class="sel" name="rent_buy"> <option value="?">Sale/Rent?</option> <option value="0">Rent</option> <option value="1">Sale</option> </select> </div> <div class="col-md-3 col-sm-6 col-xs-12"> <select disabled="disabled" id="pp" class="sel" name="type"> <option value="">Property type?</option> <option class="hd1" value="1">Villa/Home</option> <option class="hd1" value="2">Condo/Apartments</option> <option class="hd1" value="3">Bungalo</option> <option class="hd2" value="4">Villa/Home</option> <option class="hd2" value="5">Condo/Apartments</option> <option class="hd2" value="6">Project</option> <option class="hd2" value="7">Commercial</option> <option class="hd2" value="8">Land</option> </select> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script> $("#sdelka").change(function() { var v = +this.value; $( ".hd1").css('display', ['block', 'none'][v]); $( ".hd2").css('display', ['none', 'block'][v]); $('#pp').prop('disabled', isNaN(v)); }); </script> |
Не знаю, я не считаю планшет компьютером, по крайней мере мне такого не нужно, у меня нет. Что за браузер на планшете чужом тем более не знаю и есть ли какие способы профиксить его поведение.
Самым простым и логичным, это не стиль опций менять, а делать их недоступными, то есть: $("#sdelka").change(function() { $( ".hd1, .hd2").prop('disabled', +this.value); $('#pp').prop('disabled', !this.value); }); |
Вообще-то по нормальному надо делать два селекта второго уровня и показывать из них нужный в соответствии с выбором в селекте первого уровня.
|
а это может из-за браузера быть? т.к. ни один ни Ваш ни мой вариант не работает именно на ПЛАНШЕТЕ
|
artem55555p,
Цитата:
Что значит - не работает? |
хром. та же проблема. при клике на один селект, во втором селекте показываются все пункты. хотя вот вы же и писали:
$( ".hd1").css('display', ['block', 'none'][v]); $( ".hd2").css('display', ['none', 'block'][v]); но это тоже не работает(( |
я не знаю, почему пункты не убираются... 2й день сижу
|
Часовой пояс GMT +3, время: 11:13. |