一尘不染

如果它为空,如何防止提交HTML表单的输入字段值

html

我有带输入字段的HTML表单。一些输入可以为空,即值为“”。

<input name="commentary" value="">

刚才,commentary未设置字段时,它显示在提交网址中,如下所示:&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中传递空名称。


阅读 578

收藏
2020-05-10

共1个答案

一尘不染

据我所知,这只能通过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');

myForm.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 = '';
        }
    }
});

如果您使用侦听器并取消,则之后可能还需要重置表单。

2020-05-10