У меня есть форма с полем <input type=number>
.Форма не отправляется через <button type=submit>
, но значения поля ввода собираются с помощью функции Javascript и передаются в вызов AJAX.В классическом представлении Firefox запрещает мне отправлять форму, когда одно из полей ввода недопустимо.Но в этом случае этого не происходит.Вместо этого Firefox устанавливает недопустимое значение поля как пустое.Поскольку мой параметр не требуется, я не могу на стороне сервера определить, был ли он недействительным или просто намеренно пропущен.Небольшой рабочий набросок того, что делает моя программа:
<html><head><meta charset="utf-8">
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>
<script>
$(document).ready(function() {
$("#button").click(
function() {
let data = {somefield: $("#field").val()};
console.log("data to transfer:", data);
$.ajax({
type: "POST",
dataType: "json",
url: "http://httpbin.org/post",
data: data,
success: function(e) {
console.log("server response:", e.form);
}
});
}
);
});
</script></head><body><form>
<input id="field" type="number" />
<button type="button" id="button">Submit</button>
</form></body></html>
Chrome лучше справляется с этой ситуацией - он не позволяет мне набирать нечисловые символы в числовых полях.Попытка эмулировать это поведение с помощью jQuery сопряжена с другими проблемами, которые, вероятно, стоили бы другого вопроса.
Как лучше всего справиться с этим в Firefox?