Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.12.2013, 20:04
Новичок на форуме
Отправить личное сообщение для some0ne Посмотреть профиль Найти все сообщения от some0ne
 
Регистрация: 24.12.2013
Сообщений: 8

Как связать елементы
Здравствуйте !
Прошу помощи в решение сл. проблемы ....
есть форма которая формирует список файлов сл. образом:
чекбокс - имя файла - режим чтения(селект) - режим записи(селект)

как по выбранному чекбоксу получить соответствующие значения 2х селектов !?
Код
$i = 0;
        while ($Files) {

            $FileList .= '
                <tr class="Table">
                    <td align="center" class="Table_Form">
                        <input type="checkbox" class="Checkbox" id="' . $i . '" name="Checkbox[]">
                    </td>
                    <td align="left">
                        <label for="' . $i . '">
                            <div class="Checkbox_Name">' . $File . '</div>
                        </label>
                    </td>
                    <td align="right">
                        <select id="' . $i . '" name="ReadMode[]" form="DBForm">
                            <option value="bin">Binary</option>
							<option value="text">Text</option>
                        </select>
                    </td>
                    <td align="right">
                        <select id="' . $i .  '" name="WriteMode[]" form="DBForm">
                            <option value="bin">FullBackup</optin>
                            <option value="text">StructureBackup</optin>
                        </select>
                    </td>
                </tr>
			';
            $i++;
        }
Ответить с цитированием
  #2 (permalink)  
Старый 26.12.2013, 21:43
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,169

some0ne, причем тут твой ПХП? Делай простой хтмлный пример...
Ответить с цитированием
  #3 (permalink)  
Старый 26.12.2013, 21:45
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,169

Сообщение от some0ne
как по выбранному чекбоксу получить соответствующие значения 2х селектов !?
Навскидку... Найдя чекбокс - узнаешь строку. А в той строке будут его селекты.
Ответить с цитированием
  #4 (permalink)  
Старый 28.12.2013, 01:29
Новичок на форуме
Отправить личное сообщение для some0ne Посмотреть профиль Найти все сообщения от some0ne
 
Регистрация: 24.12.2013
Сообщений: 8

Допустим узнал чекбокс по id, получил значение етого id в переменную, номер строки будет совпадать с номером id... а вот как теперь обратиться к етой строке и вытянуть select-ы ?
Ответить с цитированием
  #5 (permalink)  
Старый 28.12.2013, 14:47
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,169

Сообщение от some0ne
получил значение етого id в переменную, номер строки будет совпадать с номером id...
Запоминать ИД в переменную необязательно... Достаточно получить ссылку на сам чекбокс... Далее все пляшется от нее.

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
-->
<style type="text/css">
</style>
<script type="text/javascript">
$(function (){
	$('button').click(function (){
		$('.Table input:checked').each(function (){
			$(this.parentNode.parentNode).find('select').each(function (){
				alert(this.value);
			});
		});
	});
});
</script>
</head>
<body>
<table>
	<tr class="Table">
		<td align="center" class="Table_Form">
			<input type="checkbox" class="Checkbox" name="Checkbox[]">
		</td>
		<td align="left">
			<label>
				<div class="Checkbox_Name">$File 1</div>
			</label>
		</td>
		<td align="right">
			<select name="ReadMode[]" form="DBForm">
				<option value="bin1">Binary</option>
				<option value="text1">Text</option>
			</select>
		</td>
		<td align="right">
			<select name="WriteMode[]" form="DBForm">
				<option value="bin2">FullBackup</optin>
				<option value="text2">StructureBackup</optin>
			</select>
		</td>
	</tr>
	<tr class="Table">
		<td align="center" class="Table_Form">
			<input type="checkbox" class="Checkbox" name="Checkbox[]">
		</td>
		<td align="left">
			<label>
				<div class="Checkbox_Name">$File 2</div>
			</label>
		</td>
		<td align="right">
			<select name="ReadMode[]" form="DBForm">
				<option value="bin3">Binary</option>
				<option value="text3">Text</option>
			</select>
		</td>
		<td align="right">
			<select name="WriteMode[]" form="DBForm">
				<option value="bin4">FullBackup</optin>
				<option value="text4">StructureBackup</optin>
			</select>
		</td>
	</tr>
</table>
<button>getValue</button>
</body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 08.01.2014, 18:01
Новичок на форуме
Отправить личное сообщение для some0ne Посмотреть профиль Найти все сообщения от some0ne
 
Регистрация: 24.12.2013
Сообщений: 8

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

Переделал немного код чтобы вести учет выбранных элементов
var list = null;
        var chk_res = [];
        var sel_res = [];
        var selectVal;

        list = $('.Main input:checked');
        list.each( function(index) {
            chk_res += $(this).attr('id');
            if (index < list.length - 1)
                chk_res += ',';

            $(this.parentNode.parentNode).find('select').each(function (){
                selectVal = this.value;
                
                if (selectVal === null)
                    selectVal = "none";

                sel_res += selectVal;
            });
        });
        chk_res.toString();
        sel_res.toString();

        var hiddenCheck = document.getElementById('Checklist');
        hiddenCheck.value = chk_res;

        var hiddenSelect = document.getElementById('Selectlist');
        hiddenSelect.value = sel_res;

но вот если селект не выбран то его значение (предусмотренное в none) не выводит !
Чекбоксы - все отображает !
Ответить с цитированием
  #7 (permalink)  
Старый 09.01.2014, 01:44
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от some0ne
как по выбранному чекбоксу получить соответствующие значения 2х селектов !?
Проиндексировать родню.

У вас одинаковый id как число присвоен нескольким элементам. Обычно же, ну типа w3c так считает, что id должен быть уникальным и желательно чтобы начинался с буквы.

Атрибуты типа align="right" показывают что вы собираете коды по крупицам не понимая чего каждая крупинка означает.

Вот так надо:

<tr id="row'.$i.'">
<input type="checkbox" name="Checkbox[.'$i.']">
<input type="select" name="SelectOne['.$i.']">
<input type="select" name="SelectTwo['.$i.']">
<input type="select" name="SelectOneHundredFiveHundreds['.$i.']">

На сервере получите обычные массивы successful элементов как и предусмотрено. А на клиенте без мороки с родственниками мгновенно получите ссылку на любой объект по индексу, который элементарно достать из this.name

В том числе таким вот дубовым методом

var select100500 = document.getElemensByName(this.name.replace('Checkbox', 'SelectOneHundredFiveHundreds')[0];


Вполне понятно что и собственно id могут быть точно такими же как name, поскольку это разные атрибуты, и тогда
var select100500 = document.getElemenById(this.id.replace('Checkbox', 'SelectOneHundredFiveHundreds'));


Но самая мякотка это воткнуть в тот цикл while($File) генерацию js-кода через который сообщить включенному скрипту все чего он хотел бы узнать.

Последний раз редактировалось kostyanet, 09.01.2014 в 01:55.
Ответить с цитированием
  #8 (permalink)  
Старый 09.01.2014, 02:02
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от some0ne
но вот если селект не выбран то его значение (предусмотренное в none) не выводит !
Все option в select доступны по индексу. http://www.w3schools.com/jsref/prop_...ectedindex.asp
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как связать элементы?! S@IIIOk Элементы интерфейса 3 25.04.2012 18:16
Как писать код который легко поддерживать, расширять, читать. Policeman Общие вопросы Javascript 3 24.03.2012 05:40
Как при быстром многократном клике по кнопке обрабатывать только первый клик battrack jQuery 3 22.03.2012 10:47
Как отловить обратное событие "click" ? jsuse Общие вопросы Javascript 2 18.01.2012 00:16
Как сделать электронный каталог продукции? natarius Серверные языки и технологии 6 24.05.2009 20:56