【问题标题】:Form Get Method: prevent empty fields from submittion in query string表单获取方法:防止在查询字符串中提交空字段
【发布时间】:2013-07-24 08:56:01
【问题描述】:

我正在开发一个搜索表单。

搜索表单有 2 个部分, 首先使用一些选择、输入和提交按钮进行简单搜索。 第二个包含许多选择、复选框、单选、输入和提交按钮。

我正在使用 GET 方法,因为我想要查询字符串中的所有字段。 example.com/cars-parts/cars-for-sale/?country=205&city=19&cars_category=462

但问题是如果用户不选择某些字段(因为他不想应用此条件)很多空字段并使查询字符串太长。

问题:

我想在提交表单之前删除(禁用或任何需要的)所有空字段,以便查询字符串仅包含具有值的字段。

注意:仅建议使用表单获取方法。过去我使用 POST 方法,查询字符串中没有传递任何值,但现在我想要查询字符串中的值。

感谢您的阅读。

【问题讨论】:

  • Hiya Asad - 这实际上是一个现有问题的副本,但如果它仍然对您有用,我刚刚在原始 over here 上发布了一个不同的选项。简短的版本是(在 Apache 上)使用 mod-rewrite 规则可能是一个更好的解决方案,如果您想确保在用户不使用 Javascript 时正确删除字段。
  • 是的,它有帮助,感谢您的回答

标签: jquery forms get


【解决方案1】:

您可以在表单提交事件上绑定一个函数并删除/禁用所有带有空值的输入。像这样:

your_form.submit(function() {
    your_form.find('input').each(function() {
        var input = $(this);
        if (!input.val()) {
            input.remove(); // or input.prop('disabled', true);
        }
    });
});

【讨论】:

  • 是的,你是对的,但它只会删除输入,正如我所说的,可以有选择、复选框、单选等。
  • 目前写一个,$('#frm_search').submit(function(){ $(this).find(':input[value=""]').prop('disabled' , true); $(this).find('select').not(":selected").prop('disabled', true); return true; });
【解决方案2】:

尝试在您的 $(function(){ ... }) 部分中使用以下内容:

$('form').submit(function(){$('input[value=]',this).remove();return true;})

这将在提交之前从您的表单中删除所有空的input 元素。您当然可以修改它以包括未选中的选择框等。

【讨论】:

  • 这不会删除 empty input 元素,但会删除 没有value="…"的输入元素。跨度>
  • Quinn 是绝对正确的 - 有一段时间没来这里了......但是,这个 工作:$('form').submit(function(){ $('input').each(function(){with($(this)) if (val()=='') remove();}) })
  • 哎呀,上面的评论当然是 Magus 的回答——抱歉重复了!
【解决方案3】:

我认为您必须在包含到 .get() 方法之前验证所有这些字段,并且不要将那些没有值的输入包含到 .get() 方法中。

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    相关资源
    最近更新 更多