28.10.2018, 04:52
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от brp80000
|
Установка Can_ID.maxlength = "4"; должна работать?
|
И что это такое вообще?
|
|
28.10.2018, 05:06
|
Аспирант
|
|
Регистрация: 27.10.2018
Сообщений: 40
|
|
Сообщение от laimas
|
<style>
.maxlen:invalid {
color: #f00
}
.maxlen:valid {
color: #444;
}
</style>
<input class="maxlen" pattern="[A-F\d]{1,6}" />
|
А КАК СЮДА ВСТАВИТЬ ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ?
<script>
Can_ID.value = Can_IDs;
</script>
|
|
28.10.2018, 05:14
|
Аспирант
|
|
Регистрация: 27.10.2018
Сообщений: 40
|
|
Всё получилось, спасибо
|
|
28.10.2018, 05:33
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от brp80000
|
Can_ID.value = Can_IDs;
|
И где же "правило" "Там сохраняются как раз пары НАЗВАНИЕ .. ЗНАЧЕНИЕ"?
Я теряю ход мысли, дальнейшее похоже на куски вырванные из контекста.
Когда-то я вплотную занимался микроконтроллерами, имеется в виду Atmel, Microchip и т.п. Сейчас очень редко, когда нужно что-то для себя сделать. А контроллер, это цифровой автомат, выполняющий то, что предписано, изменили предписание, изменилось поведение.
Я пишу либо на ассемблере, либо на си, при этом я могут портам назначить имена. Если я хочу управлять этими портами через интерфейс (форму), то мне выгодно имена этих портов связать так, что и программа на JS была не костылем с «ручной сборкой и установкой» параметров, а таким же цифровым автоматом. То есть, если речь о пяти формах, то один и тот же автомат обеспечивает работу со всеми формами, а как поступать с полями в той или иной форме, это будет предписано через атрибуты, группы имен классов, имена и т.п.
Этого у вас нет. Более того, maxlength, это параметр, определяющий максимальную длину значения. Почему он изменяется динамически? Если это необходимо, то почему это не является частью задачи «js-автомата» и выглядит как одна из ручных операций среди сотни?
Если я пишу интерфейс к своему контроллеру, доступ к нему имею только я, значит достаточно определить границы наборов ввода и выбора, причем многое может контролироваться не активным сценарием, а непосредственно браузером. Моей же главной задачей будет проверка на сервере – любое пришедшее поле не входящее в ожидаемый набор или же любое значение поля, которое не в границах допустимого, означает, что форма левая.
Более что-то сказать еще я не могу, ибо не видно протокола, по которому обменивается клиент-сервер, как определяется параметр -> сопутствующее поле формы -> значение. Показываются куски непонятные и практически несвязуемые.
Сообщение от brp80000
|
А КАК СЮДА ВСТАВИТЬ ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ?
|
value="значение"
|
|
28.10.2018, 05:40
|
Аспирант
|
|
Регистрация: 27.10.2018
Сообщений: 40
|
|
А можно сделать чтобы в зависимости от выбранного значения в предыдущем selectE
<select name ="CanFrame_Type" id="CanFrame_Type">
<option value="Std">Std</option>
<option value="Ext">Ext</option>
</select>
</div>
тут менялось количество доступных для ввода символов 1-4 или 1-8
<style>
.maxlen:invalid {
color: #f00
}
.maxlen:valid {
color: #444;
}
</style>
<input class="maxlen" pattern="[A-F\d]{1,6}" />
Последний раз редактировалось brp80000, 28.10.2018 в 05:43.
|
|
28.10.2018, 05:46
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Можно, но почему при этом значения опций имеет не 4 и 8, а Std и Ext? Что проще - взять значение списка применяя его как параметр для поля формы или по строковому значению списка где-то выковырять сопутствующее цифровое значение, которое уже применить как параметр к полю формы?
У вас и с переменными так - у них одни имена, а поля для которых они определены вообще по иному дразнятся. Это не программа, это пятнашки, где вы вынуждены сами каждую руками двигать.
|
|
28.10.2018, 07:40
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Допустим что у вас Ajax. В этом случае отправить форму, это ее сериализация (если JQ, то ее методы) или FormData(текущая форма). В любом случае поля формы должны иметь имена. Если имена полей это имена переменных, а форм несколько, то выгоден JSON:
//это установки контроллера и данные по формам
var data = {'#as1': [ //для одной формы
{'Sample_Rate': 1},
{'Sample_Volume': 2}
], '#as2': [ //для другой формы
{'var_Rate': 2},
{'var_Volume': 2}
]};
//как отметить выбор в формах
$.each(data, function(frm, opt) { //обходим объект
frm = document.querySelector(frm); //получили форму
$.each(opt, function(i, d) { //устанавливаем значения/выбор в полях
var name = Object.keys(d); //имя поля/параметра
frm[name].querySelector('[value="'+d[name]+'"]').selected = true; //установка
})
})
Если форма имеет флажки, радио кнопки, текстовые поля, то можно сгруппировать такие поля префиксами в именах, например списки, это sel_, флажки и кнопки, это chk_, val_ текстовое поле. Проверяя префикс имени можно определить действие, то есть для списка это найти соответствующий опшен, выбрав его, для флажков отметить/выбрать как checked, а для текстовых полей установить значение. То есть без всяких заморочек не оперируя явно именами.
Всякие управляющие конструкции, типа как при изменении в списке изменить параметр поля, можно конечно и ID.параметр = IDs. А что если таких конструкций не одна?
Допустим имеется ряд параметров длина значений которых может динамически изменяться. Следовательно нужно описать один обработчик для всех таких изменений. При этом длина параметра может задаваться как атрибутом maxlength, так и быть параметром рег. выражения. Значит нужно определить для обработчика элемент, в котором изменяется параметр, и где он находится. Сделать это можно просто через атрибут, который также будет служить селектором для установки обработчика:
<form>
<select data-max="max1,attr">
<option value="4">Short</option>
<option value="8">Long</option>
</select>
<input name="max1" maxlength="4" />
<select data-max="max2,reg">
<option value="4">Short</option>
<option value="8">Long</option>
</select>
<input name="max2" pattern="\d{1,4}" />
</form>
<script>
$('[data-max]').change(function() { //обработчик изменения параметров полей
var max = this.getAttribute('data-max').split(','), //элемент и место параметра
elm = this.form[max[0]]; //сам элемент
if(max[1]=='attr') elm.setAttribute('maxlength', this.value); //изменение параметра заданное атрибутом
else elm.pattern = elm.pattern.replace(/\d(?=\})/, this.value) //изменение параметра шаблона рег. выражения
})
</script>
|
|
28.10.2018, 22:18
|
Аспирант
|
|
Регистрация: 27.10.2018
Сообщений: 40
|
|
Не хочу плодить темы. Ещё вопрос. Есть возможность вывести на страницу содержимое папки на сервере папка /logs/ в папке файлы с расширением .log
Чтобы нажав на файл он скачался.
|
|
29.10.2018, 02:07
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Если каталог не закрыт для прямого доступа, не запрещен листинг файлов в нем и он не имеет индексного файла, то запрос к этому каталогу в браузере и выведет список его файлов. Выбирайте, скачивайте. Но такой каталог и его файлы будут доступны всем.
|
|
29.10.2018, 05:32
|
Аспирант
|
|
Регистрация: 27.10.2018
Сообщений: 40
|
|
Сорри, не могу никак найти команду для вывода листинга((
|
|
|
|