Как предотвратить отправку значения поля ввода HTML-формы, если оно пустое
у меня есть HTML-форма с полями ввода. Некоторые входы могут быть пустыми, т. е. значение "".
<input name="commentary" value="">
только что, когда commentary
поле не задано, оно появляется в URL отправки, например:&commentary=
как я могу удалить пустые входы из URL-адреса отправки, поэтому, когда commentary
вход пуст, он вообще не будет передан.
большое спасибо.
обновление
спасибо minitech ответ, я мог решить ее. JavaScript код ниже:
$('#my-form-id').submit(function() {
var commentary = $('#commentary').val();
if (commentary === undefined || commentary === "") {
$('#commentary').attr('name', 'empty_commentary');
} else {
$('#commentary').attr('name', 'commentary');
}
});
единственная причина, по которой у меня есть префикс имени поля с "empty_", заключается в том, что IE передает пустое имя в URL-адресе.
4 ответов
Это можно сделать только через JavaScript, насколько я знаю, так что если вы используете эту функцию нужно реструктуризировать. Идея, во всяком случае, состоит в том, чтобы удалить name
атрибут из входных данных, которые вы не хотите включать:
jQuery:
$('#my-form-id').submit(function () {
$(this)
.find('input[name]')
.filter(function () {
return !this.value;
})
.prop('name', '');
});
нет jQuery:
var myForm = document.getElementById('my-form-id');
myFrm.addEventListener('submit', function () {
var allInputs = myForm.getElementsByTagName('input');
for (var i = 0; i < allInputs.length; i++) {
var input = allInputs[i];
if (input.name && !input.value) {
input.name = '';
}
}
});
вы также можете сбросить форму после этого, если вы используете прослушиватель и отмените.
вы, вероятно, не хотите, чтобы соответствовать переключателям. И если форма содержит select, вам также нужно будет сопоставить их.
С jQuery вы можете использовать что-то вроде этого:
$('#form-id').submit(function() {
$(this).find('input[type!="radio"][value=""],select:not(:has(option:selected[value!=""]))').attr('name', '');
});
вместо submit
- введите ввод, используйте button
- введите ввод для отправки формы. Обработчик JavaScript для button
- ввод типа должен вызывать форму submit()
метод после проверки того, что комментарий не пуст. Вы также должны предупредить пользователя об их ошибке (лучше с красным текстом на странице, а не всплывающее окно, созданное alert()
).
помните, что вы не должны полагаться исключительно на стороне клиента проверка ввода, хотя, поскольку это всегда можно отправить форму с измененной страницы или непосредственно в HTTP.
Спасибо @ Ryan
Это мое решение для этого. Я использую Джерси и @BeanParam, и это устраняет проблему "" & null inputs
$('#submitForm').click(function() {
var url = "webapi/?";
var myForm = document.getElementById('myFormId');
var allInputs = myForm.getElementsByTagName('input');
for (var i = 0; i < allInputs.length; i++) {
var input = allInputs[i];
if (input.value != "" && input.name != "submitForm") {
url += input.name +'='+input.value+'&';
}
}
console.log(url);
$.ajax({
method : "GET",
url : url,
data : {
// data : "json",
// method: "GET"
},
success : function(data) {
console.log("Responce body from Server: \n" + JSON.stringify(data));
$("#responce").html("");
$("#responce").html(JSON.stringify(data));
},
error : function(jqXHR, textStatus, errorThrown) {
console.log(textStatus);
console.log('Error: ' + errorThrown);
}
});
});