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 18:37

как взять со скрипта значение для поля input
<div>
<span>Can ID (HEX):</span>
<input maxlength="8" size="6" id="Can_ID" >
</div>
<script>
xxxxxxxxxxxxxxxxxxxx
</script>

в скрипте написано
var Can_IDs = 400;

j0hnik 27.10.2018 23:55

Can_ID.value = 400;

brp80000 28.10.2018 03:33

почему то не получается ограничить ввод по количеству символов
<div>
<span>Can ID (HEX):</span>
<input type="text" id="Can_ID" onkeyup="var yratext=/['А-я','G-z','\s']/; if(yratext.test(this.value)) alert('Invalid value (valid: A,B,C,D,E,F,1,2,3,4,5,6,7,8,9,0)')" size="6">
</div>
<script>
Can_ID.value = Can_IDs;
if ('+CanFrame_Typ+'=="Std") Can_ID.maxlength = "4";
if ('+CanFrame_Typ+'=="Ext") Can_ID.maxlength = "8";
</script>

-------------------------------------------------------------
var CanFrame_Typ = "Ext";
var Can_IDs = "400";

laimas 28.10.2018 03:44

<input maxlength="8" size="6" id="Can_ID" >
var Can_IDs = 400;

Уже плохо. И взаимодействие клиента с сервером тайна покрытая мраком. Ajax? Да возможно, но это только в случае если изменение каждого параметра есть отдельный запрос. Можно в таком случае и установки контроллера запрашивать ajax запросом, при этом файл переменных в общем-то не нужен, тем более что все настройки пишутся в контроллер. В этом случае поля могут не иметь имен.

Но в начале темы фигурирует submit, а это означает, что сначала выбрали, затем отправили весь выбор. Карячится при этом собирая поля по их ID, ну если охота заморачиваться, то можно. Но куда проще естественный путь - получить форму и отправить.

Имена полей (если интерфейс оправдывает, то их ID) должны быть связаны с переменными так, чтобы с параметрами и полями формы можно было работать анонимно. Вы ведь сотню параметров хотите определить, что каждый Can_ID ручками связывать с каждым Can_ID? И это при том, что поля формы это коллекция, и в этой коллекции не так и много типов, которые различаются способом установки значений - selected, checked, value. Если при этом именовать поля с префиксами, которые будут определять группу типов полей, то хоть для нескольких сотен параметров их установка, это один цикл, максимум 10 строк кода.

brp80000 28.10.2018 04:01

Ну у меня всё побито на вкладки. Максимум 5 форм с ID на вкладке и кнопка submit.При нажатии submit планировал переписывать область флеш и перегенирировать файл с переменными

laimas 28.10.2018 04:07

Ну так форма отправляется естественным путем, а естественный путь, это поле формы должно иметь имя, иначе на сервер такое поле не передается. Вы же снабдили поля ID, а значит все придется описывать, причем все именуется так, что черт ногу сломит - переменные параметров никак не связаны с полями формы.

brp80000 28.10.2018 04:33

Имена у них будут одинаковые. Если интересно почитайте про nvs flash у ESP32. Там сохраняются как раз пары НАЗВАНИЕ .. ЗНАЧЕНИЕ
Подскажите всё же почему мой код не работает в плане параметра maxlength

laimas 28.10.2018 04:42

Во-первых выбрасывайте из атрибутов полей " if(yratext.test(this.value)) alert('Invalid value...". Во-вторых шаблон рег. выражения для проверки хранить в атрибуте pattern, и вместо js-кода в атрибутах определять сценарий - при отправлении формы проверить ввод, если определен pattern, значит рег выражением по этому шаблону. Поведение такого поля при некорректном вводе может определяться и стилями. И вообще, параметры могут быть различными (говорилось же о списках), и если это для себя, то может проще определить допустимые наборы, а свободный ввод, это типа для url.

Очень сложно что-то советовать, когда не видно концепции, а есть какие-то куски не понятно чего и для чего. ;)

brp80000 28.10.2018 04:50

Установка Can_ID.maxlength = "4"; должна работать?
синтаксис правильный?

laimas 28.10.2018 04:51

<style>
.maxlen:invalid {
    color: #f00
}

.maxlen:valid {
    color: #444;
}
</style>

<input class="maxlen" pattern="[A-F\d]{1,6}" />


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