Я пытаюсь настроить форму для отправки самому себе, но также для выполнения некоторого 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 :-(
Кто-нибудь может указать мне в правильном направлении, пожалуйста?
Что значит "значение кнопки"? Как установить какое-либо значение для кнопки? Вы используете getElementById("button") - что это ?! Затем вы устанавливаете для него какое-то «значение» и думаете, что через форму отправляется просто свойство кнопки? Используйте для этого поля ввода!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Основная проблема, с которой вы сталкиваетесь, - это попытка установить значение кнопки после доступа к ней с помощью 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>Он передает какое-то «используемое» свойство и устанавливает значение элемента (кнопки) для этого свойства. Или обновляет свойство. Поэтому ваш ответ - это всего лишь предположение о том, что происходит, а не конкретный. Хотя часть с кнопкой правда и я уже писал об этом :)
Я не уверен, что приведенное выше имеет смысл ... У меня есть 2 кнопки, и мне нужно установить элемент атрибута переменной $ _POST [button] на то, что кнопка вызывается, чтобы затем я мог направить код на основе $ _POST ["button"] переменная.
Таким образом, если одна из кнопок отправляет getNewLocation (используется), мне потребуется $ _POST ["button"] = 'used' .... Но если другая кнопка будет нажата, onclick = "getNewLocation (disused) затем обновит позиция, но $ _POST ["кнопка"] будет равно "неиспользованный"
Мое плохое .... Я должен был сказать, что я также попытался поместить скрытый ввод в форму с именем и идентификатором 'Button' и попытался установить его значение, используя скрипт, перед отправкой, но безрезультатно
Хорошо все, спасибо за отличный вклад ... Потребовалось немного времени и больше попыток, но в конце концов я добился цели ....
<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();
}
Еще раз спасибо
Не уверен, но
<input type = "button">вместоbuttonможет работать ..? Однако обычно такие данные предоставляются в скрытых входах.