Подтвердить что ты не робот

Изменить значение ввода, затем отправить форму в JavaScript

В настоящее время я работаю над базовой формой. То, что я хочу сделать с этой формой, заключается в том, что когда вы нажимаете кнопку submit/, чтобы сначала изменить значение поля, а затем отправить форму как обычно. Все это выглядит примерно так:

<form name="myform" id="myform" action="action.php">
<input type="hidden" name="myinput" value="0" />
<input type="text" name="message" value="" />
<input type="submit" name="submit" onclick="DoSubmit()" />
</form>

И вот как далеко я пришел с JavaScript. Он меняет значение "myinput" на 1, но не передает форму. Я действительно JavaScript noobie, поэтому простите меня, если это просто слишком простой вопрос, но я просто не понимаю его.

function DoSubmit(){
  document.myform.myinput.value = '1';
  document.getElementById("myform").submit();
}
4b9b3361

Ответ 1

Вместо этого вы можете сделать что-то вроде этого:

<form name="myform" action="action.php" onsubmit="DoSubmit();">
<input type="hidden" name="myinput" value="0" />
<input type="text" name="message" value="" />
<input type="submit" name="submit" />
</form>

И затем измените функцию DoSubmit, чтобы просто вернуть true, указав, что "это нормально, теперь вы можете отправить форму" в браузер:

function DoSubmit(){
  document.myform.myinput.value = '1';
  return true;
}

EDIT: я также опасаюсь использовать onclick events на кнопке submit; порядок событий не сразу очевиден, и ваш обратный вызов не будет вызван, если пользователь отправит, например, нажав на возврат в текстовое поле.

Ответ 2

document.getElementById("myform").submit();

Это не работает, так как ваш тег формы не имеет идентификатора.

Измените его так, и он должен работать:

<form name="myform" id="myform" action="action.php">

Ответ 3

Нет. Когда ваш тип ввода отправляется, вы должны иметь событие onsubmit, объявленное в разметке, а затем выполнить необходимые изменения. Значение имеет onsubmit, определенный в теге формы.

В противном случае измените тип ввода на кнопку, а затем определите событие onclick для этой кнопки.

Ответ 4

вот простой код, вы должны установить идентификатор для ввода здесь, назовите его "myInput":

      var myform = document.getElementById('myform');
      myform.onsubmit = function(){ 
                    document.getElementById('myInput').value = '1';
                    myform.submit();
                  };

Ответ 5

Вы пытаетесь получить доступ к элементу, основанному на атрибуте name, который работает для обратной передачи на сервер, но javascript отвечает атрибуту id. Добавьте id с тем же значением, что и name, и все должно работать нормально.

<form name="myform" id="myform" action="action.php">
  <input type="hidden" name="myinput" id="myinput" value="0" />
  <input type="text" name="message" id="message" value="" />
  <input type="submit" name="submit" id="submit" onclick="DoSubmit()" />
</form>

function DoSubmit(){
  document.getElementById("myinput").value = '1';
  return true;
}

Ответ 6

Моя проблема оказалась в том, что я назначал document.getElementById("myinput").Value = '1';

Обратите внимание на капитал V по значению? Как только я изменю его на малый случай, т.е. значение, данные начали публикацию. Нечетный, поскольку он не выдавал ошибок Javascript, а также

Ответ 7

Можете ли вы использовать onchange Событие

<form name="myform" id="myform" action="action.php">
<input type="hidden" name="myinput" value="0" onchange="this.form.submit()"/>
<input type="text" name="message" value="" />
<input type="submit" name="submit" onclick="DoSubmit()" />
</form>