Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   выбрать инпут вслед за чекбоксом (https://javascript.ru/forum/dom-window/40198-vybrat-input-vsled-za-chekboksom.html)

imediasun1 27.07.2013 14:58

выбрать инпут вслед за чекбоксом
 
Как выбрать инпут который следует за чекбоксом
. Необходимо вывести значение лебела для каждого выбранного чекбокса и вслед за ним вывести значение инпута который следут за выбранным чекбоксом.
Как это сделать
<input type="checkbox" id="leter_registered" class="checkbox_prepay_delivery" name="leter_registered"><label for="leter_registered"class="text" >Письмо заказное</label>
<input type="text"name=" leter_registered_price" class="input_price_delivery" size="5">
и затем вывести значение инпута который следует за каждым выбранным чекбоксом, помогите пожалуйста
$('.checkbox_prepay_delivery:checked').each(function(){
var label_check = $("label[for='"+$(this).attr("id")+"']");
var input_check = $($(this)).closest('.input_price_delivery').val();
alert(input_check);

Пробую так не получается

рони 27.07.2013 16:46

imediasun1,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
</head>

<body>
<input type="checkbox" id="leter_registered" class="checkbox_prepay_delivery" name="leter_registered" checked="checked">
<label for="leter_registered"class="text" >Письмо заказное</label>
<input type="text"name=" leter_registered_price" class="input_price_delivery" size="5" value="12345">
<script>
$('.checkbox_prepay_delivery:checked').each(function(){
var label_check = $(this).nextAll('label');
var input_check = label_check.next();
alert([label_check.text(),input_check.val()])
             })
</script>
</body>

</html>

imediasun1 27.07.2013 16:58

Значение инпута в алерте не выводится, только значение почемуто лебла,
если отдельно прописать
alert(input_check.val());

то результат undefined

рони 27.07.2013 17:03

Цитата:

Сообщение от imediasun1
Значение инпута в алерте не выводится, только значение почемуто лебла

а куда оно делось?

ruslan_mart 27.07.2013 17:05

А если:
var input_check = label_check.nextAll('input:text:first');


Хотя странно, что next() не работает.

рони 27.07.2013 17:08

Ruslan_xDD,
в каком браузере неработает?

ruslan_mart 27.07.2013 17:15

рони, проверил сейчас, всё работает, видимо автор что-то не так скопировал.

imediasun1 27.07.2013 17:18

var input_check = label_check.next();

Вот так не работает в Файрфоксе в других не проверял , все правильно скопировал

imediasun1 27.07.2013 17:20

И так undefined
$('.checkbox_prepay_delivery:checked').each(function(){
var label_check = $(this).nextAll('label');
var input_check = label_check.nextAll('input:text:first');
alert([label_check.text()]);
alert(input_check.val());
});

Скопировал я вот так и вместо input_check.val() пустота
$('.checkbox_prepay_delivery:checked').each(function(){
var label_check = $(this).nextAll('label');
var input_check = label_check.next();
alert([label_check.text()]);
alert([input_check.val()]);
});

рони 27.07.2013 18:10

imediasun1,
а что-то в значении инпута есть ? и конечно лучше видеть весь нерабочий код. здесь то работает пример ?

imediasun1 27.07.2013 18:17

Да конечно же есть
<div id="prepay_methods">
<label>Предоплата</label>
<br>
<table>
<tr>
<td>
<input type="checkbox" id="leter_registered" class="checkbox_prepay_delivery" name="leter_registered"><label for="leter_registered"class="text" >Письмо заказное</label>
</td>
<td><input type="text" for="leter_registered"name="leter_registered_price"class="input_price_delivery" size="5"><label class="text">грн.</label></td>
</tr>
<tr>
<td>
<input type="checkbox" class="checkbox_prepay_delivery"id="express_service"name="express_service"><label for="express_service"class="text">Посылка курьерской службой </label>
</td>
<td><input type="text" for="express_service"name="express_service_price"class="input_price_delivery" size="5"><label class="text">грн.</label></td>
</tr>
<tr>
<td>
<input type="checkbox"class="checkbox_prepay_delivery"id="new_post_prepay"name="new_post_prepay"><label for="new_post_prepay"class="text">Новая Почта (предоплата)</label>
</td>
<td><input type="text" for="new_post_prepay"name="new_post_prepay_price"class="input_price_delivery" size="5"><label class="text">грн.</label></td>
</tr>
<tr>
<td>
<input type="checkbox"class="checkbox_prepay_delivery"id="postal_parcel_valuable"name="postal_parcel_valuable"><label for="postal_parcel_valuable"class="text">Почтовая посылка ценная </label>
</td>
<td><input type="text" for="postal_parcel_valuable"name="postal parcel_valuable_price"class="input_price_delivery" size="5"><label class="text">грн.</label></td>
</tr>
<tr>
<td>
<input type="checkbox"class="checkbox_prepay_delivery"id="pickup"name="pickup"><label for="pickup"class="text">Самовывоз </label>
</td>
<td><input type="text" for="pickup"name="pickup_price"class="input_price_delivery" size="5"><label class="text">грн.</label></td>
</tr>
<tr>
<td>
<input type="checkbox"class="checkbox_prepay_delivery"id="meeting"name="meeting"><label for="meeting"class="text">При встрече</label>
</td>
<td><input type="text" for="meeting"name="meeting_price"class="input_price_delivery" size="5"><label class="text">грн.</label></td>
</tr>
<tr>
<td>
<input type="checkbox"class="checkbox_prepay_delivery"id="postal_parcel"name="postal_parcel"><label for="postal_parcel"class="text">Почтовая посылка</label>
</td>
<td><input type="text" for="postal_parcel"name="postal_parcel_price"class="input_price_delivery" size="5"><label class="text">грн.</label></td>
</tr>
<tr>
<td>
<input type="checkbox" class="checkbox_prepay_delivery"id="leter"name="leter"><label for="leter"class="text">Письмо простое</label>
</td>
<td><input type="text" for="leter"name="leter_price"class="input_price_delivery" size="5"><label class="text">грн.</label></td></tr>
</table>
</div><!--prepay_methods-->

ruslan_mart 27.07.2013 18:23

Так работать не будет.

рони 27.07.2013 18:38

imediasun1,
мда ...
$('.checkbox_prepay_delivery:checked').each(function(){
var label_check = $(this).next();
var tr = $(this).parents('tr')
var input_check = $('input:last',tr);
alert([label_check.text(),input_check.val()])
             })

imediasun1 27.07.2013 23:18

Спасибо большое, это то что нужно было, спасибо


Часовой пояс GMT +3, время: 02:47.