如何只传递某些表单值

时间:2009-02-02 15:28:03

标签: javascript html

我有一个有很多SELECT的表单。由于各种原因,我只想传递给用户选择的表格。换句话说,每个SELECT都是这样的:

<SELECT name=field001>
  <option value=-1>Please pick a value</option>
  <option value=1>1</option>
  <option value=2>2</option>
  <option value=3>3</option>
</SELECT>

通常,一次只会选择一个或两个,我只想将选定的一个传递给表单。我猜我需要在JavaScript中取消设置为-1的输入,但我不知道该怎么做,也不知道是否可能有这种方法的标准方法。

4 个答案:

答案 0 :(得分:5)

发布表单时,它会将每个控件的值发送到服务器。如果您需要阻止这种情况,我认为您最好的选择是覆盖onSubmit操作并重定向到同一页面的新实例,只在查询字符串中放置您想要的信息。

请记住,这会增加您的代码复杂性,并且会使维护更加困难。我的观点是,你根本不会获得足够的性能来让你的努力值得,但这取决于你。

答案 1 :(得分:1)

这并不常见。

如果你真的需要它,那么你可以做@Sergio建议的,或者实际上删除你想要从dom跳过的项目,或者在你提交时将它们标记为禁用(尽管有些浏览器我做了不同的事情) disabled控件 - 你必须检查。)

这真的不常见。如果您有这么多选择,发送它们会导致问题,那么您的选择太多了。

处理此问题的常用方法是使用您的魔术值“-1”来知道何时忽略服务器端的某些值。

答案 2 :(得分:1)

无论数量多少,我都会检查每个元素,尤其是因为数量。你怎么能确定用户没有改变别的东西?你说:

  

通常,一次只能选择一个或两个

就在那里,你甚至都不是100%肯定,是吗?经验告诉我永远不要相信你希望“通常”会发生什么,因为这通常会让你感到意想不到!

答案 3 :(得分:1)

假设您只有一个表单将此脚本添加到您的页面:

document.forms[0].onsubmit = function(){
    var selects = this.getElementsByTagName('select');
    for ( var i = selects.length - 1; i>=0; i-- ) {
        if ( selects.item(i).value == -1 ) {
            selects.item(i).parentNode.removeChild(selects.item(i));
        }
    }
    return true;
}