Поместить значение переменной в тег value и работа onmousedown/onmouseup
Друзья, совсем новичок во всём этом.
Для Вэб-сервера ПЛК нужно реализовать кнопку, которая будет отправлять "1" при нажатии и "0" при отпускании. Долгими муками вышло следующее, но кажется где-то ошибочка) подсобите, друзья) Код:
<body> |
zerocooolx,
Цитата:
value - не тег, а атрибут элемента html. https://webref.ru/html/input Многовато body Совершенно непонятно, куда (и зачем?) вы хотите отправлять 0 или 1. Стоит почитать про функциональность form например https://webref.ru/html/form http://www.wisdomweb.ru/HTML/forms.php Пока больше сказать нечего |
zerocooolx,
Небольшой пример по занесению значения в input <body onmousedown="mousedown()" onmouseup="mouseup()"> <input name="Stop_WEB" value=""> </body> <script> var target = document.querySelector("input[name='Stop_WEB']"); function mousedown(){ target.value=1; }; function mouseup(){ target.value=0; } </script> |
При нажатии и так уйдет, а на отпускание повесь скрипт на кнопку сабмит, чтобы по mouseup сабмитила форму.
|
Сейчас опробую, спасибо)
Суть такова - через "input" шлётся на адрес в PLC "Stop_WEB" значение 1/0. Так вот, просто послать 1 или 0 получается легко, а вот так что бы послать 1 при нажатии, а 0 при отпускании не выходит. Усугубляет, то что переменная из PLC объявляется в кавычках, и как только конструкцию переписываешь с кавычками, то нет выборки 1/0, а появляется поле ввода значения и оно засылается по нажатию кнопки. Т.е. всё работает как нужно, но посылается переменная без кавычек, и PLC её "не узнаёт". <body style="margin: 50; background: LightCyan; text-align: center"> <h1>LM60</h1> <!-- AWP_In_Variable Name='"Stop_WEB"' --> <form method="get" action="" onmousedown="mousedown()" onmouseup="mouseup()"> <input type="submit" value="СТОП" style="height: 55px; width: 200px"> <input name='"Stop_WEB"' value=""> </form> <script> var target = document.querySelector("input[name='"Stop_WEB"']"); function mousedown(){ target.value=1; }; function mouseup(){ target.value=0; } </script> </body> Есть ли какая-нибудь функция для JS которая сможет отправлять значение прямо из скрипта в переменную? Спасибо. Получилось!) <body style="margin: 50; background: LightCyan; text-align: center"> <h1>LM60</h1> <!-- AWP_In_Variable Name='"Data_block".Stop_WEB' --> <form name="f" method="get" action=""> <input type="hidden" name='"Data_block".Stop_WEB' id='"Data_block".Stop_WEB' type="text" value="" > </form> <BUTTON onmousedown="mousedown()" onmouseup="mouseup()" onmouseout="mouseup()">СТОП</BUTTON> <script> function mousedown(){ document.getElementById('"Data_block".Stop_WEB').value = "1"; document.forms["f"].submit(); } ; function mouseup(){ document.getElementById('"Data_block".Stop_WEB').value = "0"; document.forms["f"].submit(); } </script> </body> |
zerocooolx,
Ну само собой если форма перегружает страницу, ты сможешь только нажимать баттоны. Отпускание произойдет как раз в тот момент, когда поезд Москва-Магадан уже отправляется с 11-го пути. Тебе же не нужен метод post? Ну и отправляй get'ом в урле. То есть стандартная функция отправки данных на сервер к которой приделан калбек для кошерных вещей. Значения для передачи на сервер должны быть суцессфульными. Можно и нули передавать, конечно, но с ними будет геморрой, поэтому передавай явные величины, а на сервере уже обнулишь. Тут значит 1 и -1. <input id="btn" type="button" value="Задавись"/> <script> var action_url /* = урл который тебе должен быть известен */, ajax_get=function(u,c) { var x=new XMLHttpRequest(); x.onreadystatechange=function(){ if(this.readyState==4) { try{if(c) c(this);} catch(e){alert('Облом '+e);} } }; x.open("GET",u); x.setRequestHeader("X-Requested-With","XMLHttpRequest"); x.send(); }, callback=function(x){ alert('Задавил '+x); }, send=function(e){ var v={'mousedown':1,'mouseup':-1} ajax_get(action_url+'?v='+v[e.type],callback); }; document.getElementById('btn').addEventListener('mouseup',send); document.getElementById('btn').addEventListener('mousedown',send); </script> |
Для метода post действующее вещество такоэ же ми-ми-ми:
ajax_post=function(u,d,c){ var x = new XMLHttpRequest(), f = new FormData(); f.append(d); /* те же самые данные, только в поле формы */ x.open('POST',u); /* урл который ты знаешь */ x.onreadystatechange=function(){ if(this.readyState==4) { try{if(c) c(this);} catch(e){alert('Облом '+e);} } }; x.setRequestHeader("X-Requested-With","XMLHttpRequest"); x.send(f); }; Но самая мякотка, когда форма все-таки есть, как у тебя. Тогда на ее субмит прописываешь вот такое x = new XMLHttpRequest(); x.open(this.method,this.action); x.onreadystatechange = callback; x.setRequestHeader("X-Requested-With","XMLHttpRequest"); x.send(new FormData(this)); И жди ответа в callback |
Часовой пояс GMT +3, время: 18:04. |