【问题标题】:Conditionally skip form fields from submission, Reduce URL clutter有条件地从提交中跳过表单字段,减少 URL 混乱
【发布时间】:2011-03-13 04:04:55
【问题描述】:

我有多个隐藏的表单字段,它们存储有关当前视图的值(例如,如果某些,通常隐藏的 div 是可见的等)以在表单回发时恢复布局。

问题是我总是提交所有这些隐藏字段,即使它们是默认的,在此过程中会产生许多不必要的 URL 混乱(例如 http://www.example.com/view?ab=&ac=&ad= 等)。

我宁愿提交实际影响视图的字段(意思是,没有指定的默认值),以便将 URL 混乱降至最低。

我尝试手动删除/插入输入,但这是一场噩梦。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: javascript jquery url form-fields


    【解决方案1】:

    使用 jQuery,您可能在传输之前只需 remove() 那些表单元素。我能想到的另一种方法是删除name attribute

    $('form').bind('submit', function(){
        $(this).children('input').each(function(){
            if(this.value === this.defaultValue)
               $(this).remove();
        });
    });
    

    【讨论】:

    • 我可以建议if (this.value === this.defaultValue).. ;)
    【解决方案2】:

    尝试禁用它们-
    “被禁用的控件不能成功。” -- http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2

    【讨论】:

      【解决方案3】:

      除非您有理由将这些选项保留在 URL 中,否则为什么不将这些值存储在 cookie 中?事实上,这通常在许多网站上完成。如果您想更加小心,可以将显示选项存储在每个用户的数据库中,但这是您的选择。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-11
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        • 2012-03-20
        • 2014-06-13
        • 2018-02-06
        相关资源
        最近更新 更多