Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Form event handler not working (https://javascript.ru/forum/events/63546-form-event-handler-not-working.html)

Maks88 14.06.2016 14:11

Form event handler not working
 
Всем привет!
Есть проблема при передачи данных вводимых через форму..
console.log не выводит нечего в консоль..
Ивент не срабатывает..
Буду рад если кто сможет помочь...

function registerController(){

   document.getElementById("reg_button").onsubmit = function(){

    console.log("In the register");

    var user = {

    username:document.getElementById("reg_user_name").value,
    firstname:document.getElementById("first_name").value,
    lastname:document.getElementById("last_name").value,
    userid:document.getElementById("user_id").value,
    password:document.getElementById("reg_password").value,
    email:document.getElementById("reg_email").value

    }

  console.log(user.username);
  console.log(user.userid);
  console.log(user.firstname);
  console.log(user.lastname);
  console.log(user.password);
  console.log(user.email);

  registerHandler(user);

   }
 }

function registerHandler(user){


  console.log(user.username);
  console.log(user.userid);
  console.log(user.firstname);
  console.log(user.lastname);
  console.log(user.password);
  console.log(user.email);

   var xhr = new XMLHttpRequest();

   xhr.onreadystatechange = function(){

    if(xhr.readyState!=4 && xhr.status!=200){
        return window.alert(xhr.responseText);
    }
   }

    xhr.open("POST","http://localhost:8080/CouponOnWeb/webappl/register",true);
    xhr.setRequestHeader('Content-type','application/json;charset=utf-8');
    xhr.send(user);
}


<form id = "registrator" onsubmit = "registerController()">

  <label for = "reg_user_name">User name:</label>
  <input id = "reg_user_name" name = "reg_user_name" type = "text" placeholder = "user name">
  <br>
  <label for = "first_name">First name:</label>
  <input id = "first_name" name = "first_name" type = "text" placeholder = "first name">
  <br>
  <label for = "last_name">Last name:</label>
  <input id = "last_name" name = "last_name" type = "text" placeholder = "last name">
  <br>
  <label for = "user_id">Id number:</label>
  <input id = "user_id" name = "user_id" type = "number" placeholder = "id number">
  <br>
  <label for = "reg_password">Password:</label>
  <input id = "reg_password" name = "reg_password" type = "text" placeholder = "password">
  <br>
  <label for = "reg_email">Email:</label>
  <input id = "reg_email" name = "reg_email" type = "email" placeholder = "email">
  <br>
  <input id = "reg_button" name = "reg_button" type = "submit" value = "Register">
  </form>

pureJS 14.06.2016 14:35

Maks88, не срабатывает, потому что onsubmit относится только к FORM, а не к ещё и к кнопке, как у тебя. Вот так должно работать:
function registerController()
{

    console.log("In the register");

    var user = {

    username:document.getElementById("reg_user_name").value,
    firstname:document.getElementById("first_name").value,
    lastname:document.getElementById("last_name").value,
    userid:document.getElementById("user_id").value,
    password:document.getElementById("reg_password").value,
    email:document.getElementById("reg_email").value

    };

  console.log(user.username);
  console.log(user.userid);
  console.log(user.firstname);
  console.log(user.lastname);
  console.log(user.password);
  console.log(user.email);

  registerHandler(user);
}


И ещё во втором месте тоже ошибка. Надо так:
if(xhr.readyState == 4)
{
    if(xhr.status == 200)
    {
    //............

Maks88 14.06.2016 16:43

Спасибо всё заработало.


Часовой пояс GMT +3, время: 17:11.