08.02.2017, 17:36
|
Новичок на форуме
|
|
Регистрация: 06.10.2015
Сообщений: 8
|
|
Знаешь, критика конечно нужна, но "зачем" , "почему" не решит проблему.
Я и сам знаю что лучше пароли хранить на сервере, но, поставлена задача с такими условиями и её надо решить.
"Одно окно и две кнопки"
И даже не имеет значения ради чего или для кого применения.
Поделюсь, не секрет, я пишу логику для виртуального кассового аппарата, оболочку, интерфейс я уже сделал.
Пока что я делаю первые наброски, разбивая один большой скрипт по модулям, я столкнулся с такой проблемой, могу ли я её решить силами Javascript, это я и хочу узнать здесь.
Весь проект свой я не буду выкладывать здесь.
Я расписал свою проблему максимально доступно, чтобы понятно было всем.
Последний раз редактировалось Vitalik2301, 08.02.2017 в 17:57.
|
|
08.02.2017, 17:55
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Vitalik2301
|
кассового аппарата
|
Прощайте деньги
А по сути, то наверное надо понимать, что ввод всего в одно поле возможен только в том случае, если поставлены жесткие ограничения - запрет в качестве ввода в логин и пароль определенных символов, которые будут приняты как разделители ввода. Иначе не получить множества, а вообще такие задачи такими граблями не решают.
Если есть условие ввода множества, то есть пара полей - для логина и пароля, надо еще ввести, жмем кнопку добавить, в форму добавляется еще пара полей для логина и пароля, и т.д. А скрипт обрабатывает элементы массива (пары полей) проверяя в каждом наборе логин и пароль. И пароли с логинами также должны тогда хранится в как массив данных.
|
|
08.02.2017, 18:09
|
Новичок на форуме
|
|
Регистрация: 06.10.2015
Сообщений: 8
|
|
Логин это просто к примеру я написал, вместо них будут команды которые выполняют отчет, но перед вводом команды будет запрос с условным паролем.
Конечно, было бы здорово где нибудь содрать исходники на языке С, с реальных торговых программ и перевести в Яваскрипт, но , где же такое взять?
Последний раз редактировалось Vitalik2301, 08.02.2017 в 20:15.
|
|
09.02.2017, 09:22
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,235
|
|
Сообщение от Vitalik2301
|
но "зачем" , "почему" не решит проблему
|
Впоследствии ты может поймешь, что без них не обойтись...
|
|
11.02.2017, 16:29
|
|
Профессор
|
|
Регистрация: 16.09.2009
Сообщений: 253
|
|
Бывaли случаи, когда "Логин@мыло.им п4р0л6" удобно было в одном поле иметь для экономии времени (ни tab, ни клик мышкой).
Что-то типа этого:
<body>
<a href='#'>Продукция</a>
<a href='#'>О нас…</a>
<input
id=Login
type=text
placeholder='Логин@почтовый'
value=''
onkeyup='
var s = this.value.replace(/\s+/, "");
if(s != this.value)
this.value = s,
document.getElementById("PassWord").focus();
' />
<input
id=PassWord
type=password
placeholder='В4ш_П4р0л6'
value=''
onkeyup='
if(this.value == "")
document.getElementById("Login").focus();
' />
</body>
P.S.: Пример, конечно, тупой.
Но, креативный и использовался (тут я его упростил)…
|
|
14.02.2017, 18:18
|
Новичок на форуме
|
|
Регистрация: 06.10.2015
Сообщений: 8
|
|
Спасибо конечно что пытаешься мне помочь.
Я почти добился чего хотел, но скрипт как карточный домик, чихнешь и он рассыпется.
Думаю что либо серьёзное решается только через алгоритмы и ООП.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="windows-1251"/>
<title>344</title>
</head>
<body>
<script type="text/javascript">
function doCheck()
if(document.shad.txt.value == "101") {
document.getElementById("tim").innerHTML='<font color="green"> Введите пароль ? </font>';
document.shad.txt.value='';
document.getElementsByTagName("input")[0].setAttribute("type", "password");
document.getElementsByTagName("input")[0].setAttribute("id", "xxx");
}
else if(document.getElementById("xxx").value == "12321"){
document.getElementById("tim").innerHTML='<font color="#54948E"> X ОТЧЕТ </font>'
document.shad.txt.value='';
document.getElementsByTagName("input")[0].setAttribute("type", "text");
document.getElementsByTagName("input")[0].setAttribute("id", "");
//document.getElementsByTagName("input")[0].setAttribute("name", "txt");
}
else if(document.shad.txt.value == ""){
document.getElementById("tim").innerHTML='<font color="#54948E"> Вы ничего не заполнили </font>'
}
else {
document.getElementById("tim").innerHTML='<font color="red"> Не правильно !</font>'}
}
function hido(){
document.getElementById("tim").innerHTML=""
document.shad.txt.value='';
document.getElementsByTagName("input")[0].setAttribute("type", "text");
document.getElementById("xxx").value=""
document.getElementsByTagName("input")[0].setAttribute("name", "txt");
}
</script>
<form name="shad">
<p>Т400 (команда)</p>
<input type="text" name="txt" id="" size="10"/>
<span id="tim"> </span>
<br />
<p>
<input type="button" value="Проверить" onclick="doCheck()"/>
</p>
<input type="reset" id="tom" onclick="hido()"/>
</form>
</body>
</html>
Последний раз редактировалось Vitalik2301, 14.02.2017 в 18:26.
|
|
14.02.2017, 20:01
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Vitalik2301,
так что все-таки надо вводить, команды как команда=>значение, или же все таки кучу паролей? Зачем вам геморрой с кучей в одном поле. Можно например так:
<html>
<head>
<style>
.terminal, #command {
width: 250px;
height: 100px;
padding: 15px;
border: 1px solid #ccc;
float: left;
}
#terminal {
width: 200px;
margin-right: 10px;
}
#command {
overflow: auto;
}
ul {
list-style: none;
margin: 0;
padding: 0;
}
</style>
<script>
document.addEventListener("DOMContentLoaded", function() {
var com = {},
list = document.querySelector('#command');
document.querySelector('form').onkeypress = function (e) {
var o = e.target || e.srcElement, v, u = '', p;
if(e.keyCode == 13) {
e.preventDefault();
if(o.tagName == 'INPUT' && (v = o.value.split(' ')).length==3) {
o.value = '';
com[v[0]] = [v[1], v[2]];
for(p in com) u += '<li><span>' + p + '</span> <span>' + com[p][0] + '</span> <span>' + com[p][1] + '</span>';
list.innerHTML = '<ul>' + u + '</ul>';
}
}
}
});
</script>
</head>
<body>
<div class="terminal">
<form>
<label>Command Parameter</label>
<input type="text" name="txt"/>
</form>
</div>
<div id="command"></div>
</body>
</html>
</body>
</html>
Здесь просто для примера. А суть в том, что контролируется ввод двух параметров разделенных пробелом по нажатию клавиши Enter, и если это условие выполняется, то оно сохраняется в объект. Содержимое объекта выводится списком рядом, и можно по выбору в нем удалить из набранного любую позицию. Естественно при вводе по Enter можно и организовать любую проверку и выполнять заданные действия. А уже готовый набор для отправки можно объединить как душе угодно.
Последний раз редактировалось laimas, 16.02.2017 в 15:39.
|
|
16.02.2017, 13:41
|
Новичок на форуме
|
|
Регистрация: 06.10.2015
Сообщений: 8
|
|
1) Команда
2) Запрос с подтверждением пароля для этой команды
3) Значение
Спасибо, интересный скрипт, я поработаю над ним.
|
|
16.02.2017, 15:39
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Не проблема и группу по три разрешить. Кстати забыл в коде проверку источника события сделать. Изменил и сделал группой по три.
|
|
|
|