Селектор по нескольким атрибутам
Прошу помочь разобраться в селекторах. Имеется страница, возвращённая с сервера, в которой есть 10, 20, 30... одинаковых блоков. В двух словах - php, foreach, include...
<form action="tempOffStatus" method="post"> <input type="hidden" name="row" value="<?=$item_r['id'];?>"> <select id="tempOffChangeStatus" rel="<?=$item_r['id'];?>"> <option value="0" <? if($item_r['tempOff'] == 0): ?> selected <?endif;?>> есть в наличии </option> <option value="1" <? if($item_r['tempOff'] == 1): ?> selected <?endif;?>> нет в наличии </option> </select> </form> Все блоки одинаковые, но параметр rel=<?=$item_r['id'];?> в каждом блоке уникальный. Нужно select-ом менять значения в каждом конкретном блоке. <script> $(document).ready(function(){ $("#tempOffChangeStatus").change(function(){ var rel = $(this).attr("rel"); var offStatus = $("#tempOffChangeStatus + rel :selected").val(); Т.е. переменная offStatus должна относиться к одному блоку, а не ко всем сразу. Я так понимаю, что селектор в JS должен быть составным. Из двух частей. Где то я с синтаксисом намудрил, что ли. Может кто-нибудь помочь в грамотном оформлении, а то с JS я не очень ... ЗЫ. То, что в моём примере здесь, это у меня уже крыша поехала, тыкал всё подряд... |
То есть задача при выборе в списке занести его значение в скрытое поле? Если да, то нафига оно вообще нужно это поле?
|
Атрибут id замените на атрибут class...
<form action="tempOffStatus" method="post"> <input type="hidden" name="row" value="<?=$item_r['id'];?>"> <select class="tempOffChangeStatus" rel="<?=$item_r['id'];?>"> <option value="0" <? if($item_r['tempOff'] == 0): ?> selected <?endif;?>> есть в наличии </option> <option value="1" <? if($item_r['tempOff'] == 1): ?> selected <?endif;?>> нет в наличии </option> </select> </form> В скрипте соответственно #tempOffChangeStatus замените на .tempOffChangeStatus <script> $(document).ready(function(){ $(".tempOffChangeStatus").change(function() { var rel = $(this).attr("rel"); var offStatus = $(this).val(); Я правильно думаю, что вы значение переменной offStatus не собираетесь записывать в то скрытое поле? |
Если речь об input-е, то оно лишнее. Оно не нужно, я его уберу. В JS будет ajax запрос в php модель. И дальше обновление в базу данных. Там уже всё настроено и работает.
|
Теперь всё работает! Спасибо большое!!!!!
|
Ещё вопрос в догонку. Как взять результаты только первой инерации средствами JS? Ибо в теле страницы у меня столько блоков, сколько записей в БД. И перебор массива возвращается из php.
|
Цитата:
Цитата:
$(".tempOffChangeStatus").first() |
Да. Именно POST запрос. Там всё в порядке.
Вы имели ввиду так: $(document).ready(function(){ $(".tempOffChangeStatus").first().change(function( ){ var rel = $(this).attr("rel"); var offStatus = $(this).val(); В таком виде ничего не происходит. |
Цитата:
|
В таком виде почему то не работает...
|
<script> $(document).ready(function(){ $(".tempOffChangeStatus").first().change(function(){ var rel = $(this).attr("rel"); var offStatus = $(this).val(); $.post("/index.php?component=org§ion=ajax", { sect: "<?=$_GET['section']?>", id: rel, id_zp:<?=$openzakup[0]['id']?>, offStatus: offStatus, event: "tempOffStatus" }, function(){ console.log(rel); console.log(offStatus); }) }) }) </script> |
Пост №11 строка 11... может вместо
id_zp: <?=$openzakup[0]['id']?>,надо id_zp: "<?=$openzakup[0]['id']?>",? Лучше, конечно, чтобы вы так не делали... Пусть в JS-коде будет JS-код, и в PHP-коде будет PHP-код! |
У меня получается даже не массив, а 20 (по количеству sql записей) post запросов в php модель, если без first(). С правильными, но одинаковыми данными. Если добавляю first(), то ничего не происходит. Ни запросов, ни в консоль ничего не выводиться...
|
Согласен с вами, но приходиться работать с тем, что есть. С кавычками тоже ничего не изменилось.
|
Цитата:
Цитата:
Цитата:
|
Да. Мне достаточно будет первого <select>-а. Ибо они все одинаковые. Скрипт вставлен один раз в конце. Но Post отсылается почему то по количеству элементов с классом .tempOffChangeStatus в теле страницы.
|
Тьфу ты блин... Действительно. Его php-шный foreach 20 раз в страницу вставил. Буду теперь голову ломать, как выкручиваться... Ещё раз, спасибо за помощь!!!
|
Часовой пояс GMT +3, время: 00:55. |