Поместить значение переменной в тег 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, время: 13:40. |