只有可见的 Div 表单元素才会被提交

发布于 2024-09-28 06:47:09 字数 1777 浏览 7 评论 0原文

我使用 JavaScript 隐藏包含表单元素的 div

<script type="text/javascript">
<!--
function showMe (it, box) {
    var vis = (box.checked) ? "block" : "none";
    document.getElementById(it).style.display = vis;
}
//-->
</script>

当选择某些复选框时,相应的 div 将显示或可见:

<form>
    <input type="checkbox" name="modtype" value="value1" onclick="showMe('div1', this)" />value1
    <input type="checkbox" name="modtype" value="value2" onclick="showMe('div2', this)" />value2
    <input type="checkbox" name="modtype" value="value3" onclick="showMe('div3', this)" />value3
    <input type="checkbox" name="modtype" value="value4" onclick="showMe('div4', this)" />value4
    <input type="checkbox" name="modtype" value="value5" onclick="showMe('div5', this)" />value5
    <div class="row" id="div1" style="display:none">Show Div 1 <input type="text" name="valueone" id="valueone" /></div>
    <div class="row" id="div2" style="display:none">Show Div 2 <input type="text" name="valuetwo" id="valueone" /></div>
    <div class="row" id="div3" style="display:none">Show Div 3 <input type="text" name="valuethree" id="valueone" /></div>
    <div class="row" id="div4" style="display:none">Show Div 4 <input type="text" name="valuefour" id="valueone" /></div>
    <div class="row" id="div5" style="display:none">Show Div 5 <input type="text" name="valuefive" id="valueone" /></div>
    <br />
    <input type="submit" name="button" id="button" value="Submit" />
</form>

在上面如果我使用了 5 个 div 和 5 个输入,如果用户选择两个复选框并提交表单,我不希望其他 3 个输入字段以空字段提交。相反,只应提交选定的 2 个输入字段的值。

I have used JavaScript to hide the divs containing form elements:

<script type="text/javascript">
<!--
function showMe (it, box) {
    var vis = (box.checked) ? "block" : "none";
    document.getElementById(it).style.display = vis;
}
//-->
</script>

When certain checkbox(es) are selected the respective div(s) are shown or get visible:

<form>
    <input type="checkbox" name="modtype" value="value1" onclick="showMe('div1', this)" />value1
    <input type="checkbox" name="modtype" value="value2" onclick="showMe('div2', this)" />value2
    <input type="checkbox" name="modtype" value="value3" onclick="showMe('div3', this)" />value3
    <input type="checkbox" name="modtype" value="value4" onclick="showMe('div4', this)" />value4
    <input type="checkbox" name="modtype" value="value5" onclick="showMe('div5', this)" />value5
    <div class="row" id="div1" style="display:none">Show Div 1 <input type="text" name="valueone" id="valueone" /></div>
    <div class="row" id="div2" style="display:none">Show Div 2 <input type="text" name="valuetwo" id="valueone" /></div>
    <div class="row" id="div3" style="display:none">Show Div 3 <input type="text" name="valuethree" id="valueone" /></div>
    <div class="row" id="div4" style="display:none">Show Div 4 <input type="text" name="valuefour" id="valueone" /></div>
    <div class="row" id="div5" style="display:none">Show Div 5 <input type="text" name="valuefive" id="valueone" /></div>
    <br />
    <input type="submit" name="button" id="button" value="Submit" />
</form>

In the above case I have used 5 divs with five inputs, if a user selects two checkboxes and submits the form, I don't want the other 3 input fields to get submitted with empty fields. Rather ONLY selected 2 input field's value should get submitted.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

柏拉图鍀咏恒 2024-10-05 06:47:09

您可以尝试禁用空白字段,因为禁用的字段不会随表单一起提交。

You can try disabling the blank fields as disabled fields do not submit with the form.

那请放手 2024-10-05 06:47:09

这不是表单的工作方式。您需要:

  • 修改输入的值(通常不好)或者...
  • 操作 DOM 元素来修改表单的一部分以及不属于结构(而不​​是样式)级别的内容(非常糟糕)或者。 ..
  • 将其分解为多个表单并仅提交您感兴趣的表单,或者...
  • 在服务器端忽略您不感兴趣的信息,或者...
  • 更改表单设计。

如果没有进一步的证据,我会选择后两者之一。

This is not the way forms work. You need to either:

  • modify the value of the inputs (usually bad) or...
  • manipulate the DOM elements to modify what is part of the form and what is not at a structural (and not styling) level (very bad) or...
  • break this into multiple forms and submit the one you're interested in only or...
  • disregard the information you're not interested in at the server side or...
  • change your form design.

Without further evidence I'd go with one of the latter two.

花想c 2024-10-05 06:47:09

我只能想到两种方法来解决这个问题:

  1. 检查服务器上复选框的值并忽略文本框值(但这些值仍将发送到服务器)
  2. 未选中时,使用以下命令从表单中完全删除 div(或仅输入) JavaScript 并在选中复选框时将它们添加回来
  3. 前一个版本的稍微修改版本将有另一个隐藏表单,您可以在未选中时移动 div。您需要从当前表单中删除元素,并在选中复选框时将它们移回 - 这样,您可以保留用户已填充到文本框中的值,但未选中时,这些值将不会与当前表单一起提交。

I can think of only two ways to solve this:

  1. Check the values of checkboxes on server and ignore the textbox values (but the values will still be sent to server)
  2. When unchecked, completely remove the divs (or just inputs) from the form using JavaScript and add them back when checkbox is checked
  3. Slightly modified version of the previous one would be to have another hidden form, where you can move the divs when unchecked. You need to remove the elements from current form and move them back when checkbox is checked - this way, you could preserve the values user already filled into the textboxes, but when unchecked, the values won't be submitted with current form.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文