Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Форма select с элементом по умолчанию переданным из javascript (https://javascript.ru/forum/dom-window/75662-forma-select-s-ehlementom-po-umolchaniyu-peredannym-iz-javascript.html)

brp80000 27.10.2018 16:50

Json тоже но чтобы его прилепить ещё неделя уйдет

brp80000 27.10.2018 16:54

по крайней мере я реализовал на js передачу id нажатой кнопки в программу на си
ajax({
method: 'PATCH',
url: '/api/mod',
data: data
});

laimas 27.10.2018 17:01

Вот пример со списком, который на этой странице:

<html>
<head>
<meta charset="utf-8">
<title>Настройки</title>
<script src="http://domain_name/config.js"></script>
</head>
<body>
<form>
<div>
<select name="Sample_Rate">	
<option value="0">5</option>
<option value="1">10</option>
<option value="2">20</option>
</select>
</div>
<div>
<button>Submit</button>
<div>
</form>
<script>
<script>
document.querySelector('[value="'+Sample_Rate+'"]').selected = true;
</script>
</script>
</body>
</html>


Переменная Sample_Rate имеет значение ранее выбранной в списке (то что в контроллере) и наряду с другими переменными конфигурации находится в подключаемом файле config.js. Его структура проста:

var Sample_Rate = 1,
    имя следующего параметра = значение параметра,
    и т.д.


При каждом выборе пользователя и передачи формы серверу весь выбор нужно записывать в этот файл в соответствующие переменные. Можно поступить и проще - если форма отправляется методом GET, то записывать в этот файл только строку параметров запроса, то что после ?. Скрипт в файле с формой разберет эту строку и уже после разбора будет оперировать полученными значениями. То есть от вас нужно только перезаписывать файл config.js при каждом получении формы, правда серверу обязательно нужно проверять что прислали, если только у вас не защищенный вход.

laimas 27.10.2018 17:02

Цитата:

Сообщение от brp80000
я так понимаю что ajax есть

Это всего лишь один из способов взаимодействия с сервером, а дальше что?

brp80000 27.10.2018 17:18

Спасибо за пример, получилось его применить. Остается при включении процессора читать флеш и генерить файл с переменными вида
var Sample_Rate = 1,
и т.д.
Для меня это приемлемо.

brp80000 27.10.2018 17:21

У меня в принципе везде выпадающие списки select так что особо проверять нечего. Сервер поднимается на точке доступа к которой подключается клиент по ssid и pass и делает настройки.
В принципе есть пару текстовых полей с адресами, вот на них хорошо бы поставить проверку на валидность, вроде я видел примеры на JS.

laimas 27.10.2018 17:24

Цитата:

Сообщение от brp80000
Остается при включении процессора читать флеш и генерить файл с переменными вида

Не получится. В этом случае файл должен генерироваться и отдаваться серверным сценарием налету. Сделайте проще - запрос формы, при методе GET получаете строку запроса, это будет типа Sample_Rate=1&Other_param=20&..... Эту строку и пишите в файл, заменяя ранее записанную.
В основном файле с формой разбиваете эту строку получая все нужное, и затем устанавливаете в форме.

laimas 27.10.2018 17:26

Цитата:

Сообщение от brp80000
Сервер поднимается на точке доступа к которой подключается клиент по ssid

Это можно и "увести", и пароль не проблема.

Цитата:

Сообщение от brp80000
У меня в принципе везде выпадающие списки select так что особо проверять нечего

А получив доступ прислать "левую" лабуду. Беспечность, это самое плохое в веб ;)

brp80000 27.10.2018 17:28

Ну да, фильтр на "базар" не помешает

laimas 27.10.2018 17:36

Цитата:

Сообщение от brp80000
У меня в принципе везде выпадающие списки select

Если так, то выгоднее объект, в котором имя свойства, это имя списка. js сценарию при этом нужно обойти в цикле этот объект, получать список по имени свойства и делать его опцию равную значению свойства выбранной.

Цитата:

Сообщение от brp80000
есть пару текстовых полей с адресами, вот на них хорошо бы поставить проверку на валидность

Корректность ввода URL? Это не есть проблема - рег выражение, есть и спец. поле для ввода url.

Но учтите, все что проверяется на клиенте, это все для "хороших парней" на клиенте, а для сервера пустой звук, а крайним то всегда будет сервер.


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