Вставка & lt; noscript & gt; или аналог в теге формы (HTML, JavaScript)

У меня есть следующая форма:

<form id="signup" onsubmit="return false;">
... form content...
<input class="button" type="submit" />
</form>

Где при нажатии на кнопку, функция JavaScript signup() называется. Эта функция использует AJAX-вызов для проверки формы (сравните с текущими значениями базы данных), а затем отправьте форму через функцию PHP.

Мой вопрос: если у пользователя отключен JavaScript в браузере, есть ли способ, которым я могу изменить <form> тег для включения действия и метода?

Поскольку HTML5 позволяет <noscript> теги внутри тела, я думал, что я попробую что-то вроде:

<form id="signup" <noscript>action="..." method="post"</noscript>>

но это не работает

Если у пользователя включен JS, я бы хотел, чтобы вызовы AJAX обрабатывали все — это обеспечивало очень чистое взаимодействие с пользователем. НО, мне нужно, чтобы он все еще работал для тех людей, которые отключили свой JS.

Заранее спасибо.

0

Решение

Вы смотрите на это неправильно. Вы всегда хотите включить action а также method атрибуты в вашей форме.

<form id="signup" action="/path/to/signup" method="post">

Затем вы связываете функцию с submit событие и запретить отправку формы с помощью .preventDefault(); (Я предполагаю использование jQuery здесь)

$('#signup').on('submit', function(e) {
e.preventDefault();

// submit data via ajax here
});

Это намного лучше, потому что вам больше не нужно указывать URL-адрес для входа в JavaScript. Вы просто получаете это из формы.

$.ajax({
type: "POST",
url: $('#signup').attr('action'),
data: $('#signup').serialize()
})
.done(function( msg ) {
// logged in (or not)
});
5

Другие решения

Попробуйте лайкнуть этот пример

<form action="calcSquare.php">
<p>
<label for=x>Number</label>:
<input id="x" name="x" type="number">
</p>
<script>
var x = document.getElementById('x');
var output = document.createElement('p');
output.textContent = 'Type a number; it will be squared right then!';
x.form.appendChild(output);
x.form.onsubmit = function () { return false; }
x.oninput = function () {
var v = x.valueAsNumber;
output.textContent = v + ' squared is ' + v * v;
};
</script>
<noscript>
<input type=submit value="Calculate Square">
</noscript>
</form>
0

По вопросам рекламы [email protected]