событие mousedown с использованием javascript

Код, над которым я работаю, заключается в том, что как только я нажимаю кнопку, два двигателя будут вращаться непрерывно, пока я не нажму другую кнопку, чтобы остановиться. Я хочу иметь возможность нажимать и удерживать кнопку, чтобы вращать моторы, но как только я отпущу эту кнопку, мотор остановится.

Часть моего файла remoteControl.php:

$action = $_GET['action'];
$pin = mysql_real_escape_string($_GET['pin']);
        if ($action == "forward"){
        $setting = "1";
        mysql_query("UPDATE pinStatus SET pinStatus='$setting' WHERE pinNumber='17';");
        mysql_query("UPDATE pinStatus SET pinStatus='$setting' WHERE pinNumber='22';");
        mysql_close();
        header('Location: remoteControl.php'); ..........
........
<form action="remoteControl.php" method="get">
<input id="forward" type="image" src="uparrow.jpg" IMG STYLE="position:absolute; TOP:150px; LEFT:170px; WIDTH:50px; HEIGHT:50px;">
<input type=hidden name="action" value="forward">
</form>

Я пытаюсь заставить работать JavaScript:

<head>
    <script type="text/javascript">
        function OnButtonDown (button) {
            "can't figure out what to put";
        }
        function OnButtonUp (button) {
            "can't figure out what to put";
        }

        function Init () {
            var button = document.getElementById ("forward");
            if (button.addEventListener) {  // all browsers except IE before version 9
                button.addEventListener ("mousedown", function () {OnButtonDown (button)}, false);
                button.addEventListener ("mouseup", function () {OnButtonUp (button)}, false);
            }
            else {
                if (button.attachEvent) {   // IE before version 9
                    button.attachEvent ("onmousedown", function () {OnButtonDown (button)});
                    button.attachEvent ("onmouseup", function () {OnButtonUp (button)});
                }
            }
        }
    </script>
</head>
<body onload="Init ()">

person Bros    schedule 14.04.2013    source источник
comment
О каких моторах идет речь?   -  person Ian    schedule 14.04.2013
comment
Итак, вы ищете код, который заставит изображение вращаться?   -  person iConnor    schedule 14.04.2013
comment
Извините за неясность. Я работаю над Raspberry Pi. Я использую его как веб-сервер, и Raspberry также имеет GPIO (выходные контакты), которые я использую для управления или вращения двигателей постоянного тока. Как только я нажимаю на изображение со стрелкой вверх, оно отправляет команды для вращения двигателя постоянного тока.   -  person Bros    schedule 14.04.2013
comment
Когда контакты 17 и 22 на Raspberry Pi становятся высокими, они вращают двигатели.   -  person Bros    schedule 14.04.2013
comment
Вы будете более четко понимать, чего именно вы хотите. И как именно вы управляете указанными двигателями.   -  person Steven    schedule 14.04.2013
comment
Ваш вопрос заключается в том, как заставить функции OnButtonDown() и OnButtonUp() вызывать скрипт сервера PHP? Почитайте про AJAX.   -  person Barmar    schedule 14.04.2013
comment
stackoverflow.com/questions/14084687/   -  person Bros    schedule 14.04.2013
comment
Да, я пытаюсь заставить javascript косвенно вызывать PHP. Я читал об AJAX, jquery... но не смог понять.   -  person Bros    schedule 14.04.2013
comment
Тогда я попытаюсь прочитать больше об AJAX и посмотреть, что я могу найти.   -  person Bros    schedule 14.04.2013
comment
Все еще пытаюсь заставить его работать, но я хочу отдать должное drcurzon за отличный старт/руководство по Rasperry Pi: instructables.com/id/Web-Control-of-Raspberry-Pi-GPIO/#step1   -  person Bros    schedule 18.04.2013


Ответы (1)


Когда мышь опущена, вы вызываете OnButtonDown, а когда она поднята, вы вызываете OnButtonUp. Если это работает, единственная проблема заключается в том, что вы не знаете, что делать с этими функциями, чтобы обновить свою БД со статусом (я полагаю, что есть какой-то контроллер, который проверяет статус в БД и обновляет GPIO государство).

Вам нужно вызвать файл remoteControl.php (который принимает параметр GET для обновления БД). Это можно сделать с помощью функции ajax из jquery.

<head>
<!-- First we include jquery library. In this case from Google CDN -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<script type="text/javascript">
    function OnButtonDown (button) {
        //We pass the parameter forward to remoteControl.php
         $.ajax({
            data:  action=forward,
            url:   'remoteControl.php',
            type:  'get',
            success:  function (response) {

            }
         });
    }
    function OnButtonUp (button) {
        //Here the same as in OnButtonDown but passing another parameter
    }

    function Init () {
        var button = document.getElementById ("forward");
        if (button.addEventListener) {  // all browsers except IE before version 9
            button.addEventListener ("mousedown", function () {OnButtonDown (button)}, false);
            button.addEventListener ("mouseup", function () {OnButtonUp (button)}, false);
        }
        else {
            if (button.attachEvent) {   // IE before version 9
                button.attachEvent ("onmousedown", function () {OnButtonDown (button)});
                button.attachEvent ("onmouseup", function () {OnButtonUp (button)});
            }
        }
    }
</script>

person Anjz    schedule 18.04.2013
comment
Ты человек!!!!!! Кнопка работает!!!!! Мне пришлось использовать вместо '' для данных, URL-адреса и типа. Просто нужно немного отполировать, изменив кнопку на изображение, так как я использую файл изображения. - person Bros; 24.04.2013
comment
Сотрите это... не нужно переключаться с кнопки на изображение. Все готово. Большое спасибо Анж. Вы спасатель жизни. Как закрыть этот вопрос как решенный? - person Bros; 24.04.2013
comment
Слева от ответа есть кнопка проверки, если вы нажмете ее, вы примете ответ как правильный. - person Anjz; 07.05.2013