2014-10-28 7 views
0

Я хочу предоставить пользователям два механизма ввода - текстовое вхождение и выпадающее меню с помощью элемента. Входное значение выбирается в javascript. (без использования php).Извлечение ввода HTML из текста и выпадающего меню в Javascript?

Я могу сделать каждый метод работы, но не одновременно.

Это, вероятно, фундаментальный вопрос, но может ли кто-нибудь объяснить, как мне нужно настроить обработчики событий, а также значение для каждого входа, чтобы сделать эту работу?

<form name="myform" onsubmit="return userInput()"> 
    <select id="myVal" onchange="userInput()" onsubmit="return userInput()"> 
     <option>Select a country</option> 
     <option value="All Countries">All Countries </option> 
     <option value="Austrailia">Austrailia</option> 
     <option value="Korea">Korea </option> 
     <option value="Austria">Austria </option> 
     <option value="United States of America">United States of America  
     </option> 
     <option value="Japan">Japan</option> 
     <option value="Canada">Canada </option> 
     <option value="India">India</option> 
    </select> 


     <!-- <input name="Submit" type="submit" value="Add to list" > --> 
     <input type="text" id="myVal" placeholder="Add some text&hellip;"> 

</form> 

// Javascript code where I fetch user input. 

    function userInput(event){ 
       userinput = document.getElementById("myVal").value 
      // console.log(userinput) 
       // console.log(document.getElementById("myVal").value) 
      //draw(document.getElementById("myVal").value) 
      d3.select('svg').remove(); 
      main(); 
      console.log("Main has been called") 
      // draw(document.getElementById("myVal").value) 
      return false; 
     } 
+0

Ваш 'userInput()' всегда будет возвращать 'false'? –

+0

Да. Похоже, что для ввода текста функция обратного вызова должна возвращать false? Честно говоря, я не слишком разбираюсь в обработке ввода с помощью javascript, поэтому я не понимаю динамику на 100%, кроме части разметки. – user3562812

+0

почему 2 'onsubmit()'? – turtle

ответ

0

И ваш элемент выбора, и ваш элемент ввода текста имеют одинаковый идентификатор. Сделайте их уникальными и сделайте один вызов для каждого элемента вашего JS. Кроме того, избавиться от атрибута обработчика события onsubmit в элементе select.

+0

Благодарим за помощь. Просто любопытно; мы можем приложить событие «отправить» в раскрывающийся список? Или, «onchange» - единственное событие, которое можно использовать с выпадающим списком? – user3562812

+0

Нет, только onchange as-well, как onclick и некоторые другие. Вы можете делать все, что вам нужно, с обработчиком события onsubmit формы. Вы можете использовать «это» внутри своей функции, чтобы обратиться к самому элементу формы. –