Задать вопрос
CodeInside
@CodeInside

Как оформить вывод checked option с php (с БД) и jquery?

Пользователь заходит в настройки аккаунта и там должны быть заполнены все поля (взяты с БД).
С type = text проблем нету, но вот что делать с select-ми, если у меня сотни опций? Смотрел вот это stackoverflow.com/questions/1336353/how-do-i-set-t... , но бред полный ибо более 200 раз выполнять значение эллемента тупо и сайт будет грузится часами (ибо сайт знакомств и там куча всяких - разных параметров).
Я вообще придумал вто что: значения опций добавляю в форму как невидимые, считываю их через js и с помощью jquery устанавливаю selected. Получается вот что:
$hidden = '<input type="hidden" value="'.$row['country'].'" id="h_country">
<input type="hidden" value="'.$row['home_country'].'" id="h_home_country">
<input type="hidden" value="'.$row['gender'].'" id="h_gender">
<input type="hidden" value="'.$row['religion'].'" id="h_religion">
<input type="hidden" value="'.$row['habit'].'" id="h_habit">
<input type="hidden" value="'.$row['marital_status'].'" id="h_marital_status">
<input type="hidden" value="'.$row['kids'].'" id="h_kids">
<input type="hidden" value="'.$row['live_with'].'" id="h_live_with">
<input type="hidden" value="'.$row['father'].'" id="h_father">
<input type="hidden" value="'.$row['mother'].'" id="h_mother">';

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Регистрация</title>
	<link rel="stylesheet" href="../views/style/reg.css">
    <script src="../views/js/jquery-2.1.3.js"></script>
    <script>
    $(document).ready(function(){
   
    var h_country = '[value="' + $('#h_country').val() + '"]';
    var h_home_country = $('#h_home_country').val();
    var h_gender = $('#h_gender').val();
    var h_religion = $('#h_religion').val();
    var h_habit = $('#h_habit').val();
    var h_marital_status = $('#h_marital_status').val();
    var h_kids = $('#h_kids').val();
    var h_live_with = $('#h_live_with').val();
    var h_father = $('#h_father').val();
    var h_mother = $('#h_mother').val();

    $('input:select[name="country"]').filter(h_country).attr('checked', true);

});
    
    </script>
</head>
<body>
<!-- не важно -->
<?php

        echo $hidden."<tr>
                    <td class='right'>Имя</td>
                    <td><input type='text' value='".$row['first_name']."' size=20 required maxLength=50 name='first_name'>
                        </td>
                </tr>

                <tr>
                    <td class='right'>Фамилия</td>
                    <td><input type='text' value='".$row['second_name']."' name='second_name'
                        size=20 required maxLength=50></td>
                </tr>


                <tr>
                    <td class='right'>Email</td>
                    <td><input type=email value=".$row['email']." disabled></td>
                </tr>
                

                <tr>
                    <td class='right'>Мобильный телефон</td>
                    <td><select size='5' name='country'>
    <option disabled>Выберите страну</option>
    <option value='1'>---</option>
    <option value='2'>Азербайджан</option>
    <option value='3'>Армения</option>
    <option value='4'>Беларусь</option>
    <option value='5'>Казахстан</option>
    <option value='6'>Киргизия</option>
    <option value='7'>Молдавия</option>
    <option value='8'>Россия</option>
    <option value='9'>Таджикистан</option>
    <option value='10'>Узбекистан</option>
    <option value='11'>Украина</option>
   </select>
   <input type='text' name='phone' value='".$row['phone']."' size=10 maxLength=15>';
      
   </td>
                </tr>
<!-- и т.д. -->

Но почему-то js не работает. Выдаёт такую ошибку: "Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: select". Кто что посоветует?
  • Вопрос задан
  • 404 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@iShatokhin
JS developer
Правильное решение будет такое:

$('select[name="country"]').find(h_country).prop('selected', true);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
KorsaR-ZN
@KorsaR-ZN
Замените
$('input:select[name="country"]').filter(h_country).attr('checked', true);


На
$('select[name="country"]').filter(h_country).attr('selected', 'selected');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы