Кроме того, это также может быть достигнуто с помощью someDiv.innerHTML
.
#!javascript
var formDiv = document.getElementById('my_form_div'); // you hopefully have a better method to do this ;)
if (formDiv) {
var HTML = '<form method="GET" action="?submit" onsubmit="return !formSubmitted()">';
HTML += '<input type="text" name="field1" />';
HTML += '<input type="text" name="field2" />';
HTML += '<input type="submit" value="go" />';
HTML += '</form>';
formDiv.innerHTML = HTML;
}
Обратите внимание на функцию formSubmitted()
. Эта функция вызывается правильно, когда пользователь отправляет форму, затем вы можете делать все, что хотите, в JS, например, отправлять значения формы через AJAX, и если вы возвращаете true (например, когда вы успешно обработали форму в JS), значение true инвертируется в false , и форма не будет отправлена через браузер. Если пользователь отключил JS, форма будет просто отправлена браузером стандартным способом.
Преимущество этого в том, что вы можете получить желаемую форму HTML через AJAX, сгенерированную PHP, и вы можете поместить точно такой же HTML в теги < noscript >
для тех, у кого деактивирован JS, вызвав ту же функцию PHP для получите HTML:
... some HTML
<div id="my_form_div">
<noscript>
<?= myFormHTML() ?> # equal to: <?php echo myFormHTML() ?>
</noscript>
... more HTML