Выпадающее меню с javascript?

#javascript #html #drop-down-menu

#javascript #HTML #выпадающее меню

Вопрос:

Привет, я пытаюсь создать выпадающее меню с помощью javascript, где, как только я выбираю место, я получаю распечатку в поле ввода, в одном будет широта места, а во втором я получу долготу. Моя проблема в том, что я могу сделать это только для вывода либо Lat, либо Lon на вход, поэтому мне интересно, есть ли способ сделать это, чтобы напечатать их оба? Спасибо. Вот мой код:

     <html>
<script language="JavaScript"><!--
function onChange() {
  var Current =
    document.formName3.selectName3.selectedIndex;
  document.formName3.Lat1.value =
    document.formName3.selectName3.options[Current].value;
  document.formName3.Lon2.value =
  document.formName3.selectName3.options[Current].value;


}
//--></script>
<body>
<form
  name="formName3"
  onSubmit="return false;"
>
<select
  name="selectName3"
  onChange="onChange()"
>
<option
  value=""
>
Find Place
<option
  value = "52.280431"
  value ="-9.686166"
>
Shop
<option
 value = "52.263428"
  value="-9.708326"
>
Cinema
<option
 value = "52.270883"
  value="-9.702414"
>
Restaurant
<option
value = "52.276112"
  value="-9.69109"
>
Hotel
<option
  value = "52.278994"
  value="-9.6877"
>
Petrol Station
</select>
<br><br>
Lat2
<input
  name="Lat1"
  type="text"
  value=""
>
Lon2
<input
  name="Lon2"
  type="text"
  value=""
>
</form>
</body>
</html
  

Ответ №1:

Опция имеет только одно значение, а не два.

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

 <!-- make sure to close all your tags as shown below -->
<option value = "52.280431 -9.686166">Shop</option>
  

Затем вам нужно будет разбить их в вашем Javascript

 function onChange() {
    var Current =
    document.formName3.selectName3.selectedIndex;
    var latLong = document.formName3.selectName3.options[Current].value;
    // handle case where the value is ""
    if (!latLong) {
        document.formName3.Lat1.value = "";
        document.formName3.Lon2.value = "";
        return;
    }
    // split them on space
    var latLongItems = latLong.split(" ");
    // latLongItems[0] contains first value
    document.formName3.Lat1.value = latLongItems[0];
    // latLongItems[1] contains second
    document.formName3.Lon2.value = latLongItems[1];
}
  

Вы можете увидеть это в действии здесь. Обратите внимание, что я сделал ваш Javascript менее навязчивым, прикрепив все обработчики в обработчике window.onload, а не в HTML. Ненавязчивый Javascript считается лучшей практикой Javascript.

Ответ №2:

Ну вот, я подсказал вам решение.

http://jsfiddle.net/ZHHc7/