Отправка нескольких кнопок себе через javascript

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

<button type = "button" name = "used" id = "used" class = "btn btn-primary" onclick = "getNewLocation(used)">Used Hole</button>
<button type = "button" name = "disused" class = "btn btn-primary" onclick = "getNewLocation(used)">Disused Hole</button>

Например, две кнопки, а всего их 4. Затем getNewLocation выполняет следующие действия, чтобы обновить местоположение перед отправкой обратно на страницу.

function getNewLocation(x) {
                if (navigator.geolocation) {
                    navigator.geolocation.getCurrentPosition(sendPosition,showError,{enableHighAccuracy: true});
                    var elem = document.getElementById("button");
                    elem.value = x;

                } else { 
                    x = "Geolocation is not supported by this browser.";
                }
            }

            function sendPosition(position) {
                document.getElementById("lat").value = position.coords.latitude;
                document.getElementById("long").value = position.coords.longitude;
                document.getElementById("acc").value = position.coords.accuracy;
                document.forms["point"].submit();
            }

Это на самом деле работает, но не влияет на значение кнопки, но дает значение $_POST [button] как object HTMLButtonElement :-(

Кто-нибудь может указать мне в правильном направлении, пожалуйста?

Не уверен, но <input type = "button"> вместо button может работать ..? Однако обычно такие данные предоставляются в скрытых входах.

Teemu 18.06.2018 18:18

Что значит "значение кнопки"? Как установить какое-либо значение для кнопки? Вы используете getElementById("button") - что это ?! Затем вы устанавливаете для него какое-то «значение» и думаете, что через форму отправляется просто свойство кнопки? Используйте для этого поля ввода!

Andrey Popov 18.06.2018 18:29
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
45
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Основная проблема, с которой вы сталкиваетесь, - это попытка установить значение кнопки после доступа к ней с помощью var elem = document.getElementById("button");. Вы можете заметить, что ни одна из ваших кнопок не имеет атрибута id кнопки, поэтому это не сработает.

Может помочь, что сама кнопка будет передана в getNewLocation в качестве первого аргумента, что позволит вам напрямую установить ее value.

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

function getNewLocation(elem) {
  if (navigator.geolocation) { 
    // var elem = document.getElementById("button");
    elem.value = 'used';
  }
}
<button type = "button" name = "used" id = "used" class = "btn btn-primary" onclick = "getNewLocation(this)">Used Hole</button>
<button type = "button" name = "disused" class = "btn btn-primary" onclick = "getNewLocation(this)">Disused Hole</button>

Он передает какое-то «используемое» свойство и устанавливает значение элемента (кнопки) для этого свойства. Или обновляет свойство. Поэтому ваш ответ - это всего лишь предположение о том, что происходит, а не конкретный. Хотя часть с кнопкой правда и я уже писал об этом :)

Andrey Popov 18.06.2018 18:39

Я не уверен, что приведенное выше имеет смысл ... У меня есть 2 кнопки, и мне нужно установить элемент атрибута переменной $ _POST [button] на то, что кнопка вызывается, чтобы затем я мог направить код на основе $ _POST ["button"] переменная.

Jason Ellmers 18.06.2018 23:24

Таким образом, если одна из кнопок отправляет getNewLocation (используется), мне потребуется $ _POST ["button"] = 'used' .... Но если другая кнопка будет нажата, onclick = "getNewLocation (disused) затем обновит позиция, но $ _POST ["кнопка"] будет равно "неиспользованный"

Jason Ellmers 18.06.2018 23:32

Мое плохое .... Я должен был сказать, что я также попытался поместить скрытый ввод в форму с именем и идентификатором 'Button' и попытался установить его значение, используя скрипт, перед отправкой, но безрезультатно

Jason Ellmers 19.06.2018 00:46

Хорошо все, спасибо за отличный вклад ... Потребовалось немного времени и больше попыток, но в конце концов я добился цели ....

<input type = "hidden" name = "button" id = "button">
<button type = "button" name = "used" id = "used" class = "btn btn-primary" onclick = "getNewLocation('used')">Used Hole</button>
<button type = "button" name = "disused" id = "disused" class = "btn btn-primary" onclick = "getNewLocation('disused')">Disused Hole</button>

С этим в <script>

    function getNewLocation(x) {
                if (navigator.geolocation) {
                    var elem = document.getElementById("button");
                    elem.value = x;
                    navigator.geolocation.getCurrentPosition(sendPosition,showError,{enableHighAccuracy: true});

                } else { 
                    x = "Geolocation is not supported by this browser.";
                }
            }

            function sendPosition(position) {
                document.getElementById("lat").value = position.coords.latitude;
                document.getElementById("long").value = position.coords.longitude;
                document.getElementById("acc").value = position.coords.accuracy;
                document.forms["point"].submit();
            }

Еще раз спасибо

Другие вопросы по теме