我有一个有很多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的输入,但我不知道该怎么做,也不知道是否可能有这种方法的标准方法。
答案 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;
}