Изменить значение ввода, затем отправить форму в 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();
}
Ответы
Ответ 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>