【问题标题】:changing the value of check-box in JSP using JavaScript使用 JavaScript 更改 JSP 中复选框的值
【发布时间】:2014-02-20 11:16:46
【问题描述】:

我正在尝试更改复选框的值,当未选中复选框时,我希望复选框的值等于“N”。然后,如果选中该复选框,则同一复选框的值将更改为“Y”。然后这个值将被保存到我的数据库中。目前,当我保存复选框时,如果在保存到我的数据库时未选中复选框,则选中时该值将保存为“ON”,并且如果未选中该复选框,我的数据库字段将保持空白。请看下面的代码。

<script language="javascript">

    function validate() {
      if (document.getElementById('box1').checked) {
         alert("checked");
         document.getElementById('box1').value == 'Y'

      } else {
         alert("Checkbox not checked!")
         document.getElementById('box1').value == 'N'
      }
    }        

</script>

.......................

<td><input type="checkbox" name="chkbox3" id="box1" onclick="validate()"> Letter</td>

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 你能分享你用来保存到数据库的代码吗?问题可能就在那里。
  • 谢谢,但不是数据库。它的功能,我已经设法在选择时将值更改为 Y,但在不选择时无法保存 N。只有勾选了复选框,才会设置值。

标签: javascript html jsp checkbox


【解决方案1】:

基本上,我认为这是一个可以通过“post form”解决的问题。

当您单击元素复选框时,您会触发一个函数“validate()”。 然后它改变复选框的值。

当这个输入元素被这样的表单包裹时:

<form method="post" action="/your/url/to/handle/data" name="postForm">
    <input type="checkbox" name="chkbox3" id="box1" onclick="validate()"> Letter
</form>

您可以添加一个“输入提交”元素来触发此表单发布:

<form method="post" action="/your/url/to/handle/data" name="postForm">
    <input type="checkbox" name="chkbox3" id="box1" onclick="validate()"> Letter

    <input type="submit" value="submit form" />   <!-- here is the trigger input -->
</form>

然后在你的handle页面中,你就可以接收到这个表单的key-value了。

P.S 表单元素中的 checkbox'key 是“name”而不是“id”。 在此演示中,您收到了如下数据: {chkbox3:'Y'}

就是这样,希望它能解决您的问题。 :)

【讨论】:

  • 感谢@Tyler.z.yang 的帮助。我确实有一个由表单和提交按钮包裹的复选框来触发帖子。但它不是发布值“Y”或“N”,而是发布“ON”或空白字段。我会尝试使用 name 属性而不是 id,可能就是这样。
  • @ConorCaslin 我刚在搜索引擎里查了一下,好像你用的是js框架extjs4?在这个框架中,复选框的默认值为'on',这解决了检查的问题。例如:{xtype:'checkboxfield',fieldLabel:'CheckBox',name:'checkbox',inputValue:'Y',uncheckedValue:'N'} :)
  • 感谢您的研究。仍然无法让它工作。我自己一直在尝试几种不同的方法。一种是有两个同名的复选框,一个是隐藏的,一个不是。尽管用户看不到隐藏的复选框,但它会自动选中。如果选择了可见复选框,则取消选中隐藏的复选框,反之亦然。可见复选框设置为 value="Y",隐藏复选框设置为 value="N"。也不能让它工作。 :(
  • 对不起,我错了。HTML 标记复选框默认值为“on”。您的 javascript 代码中存在一些问题。 "document.getElementById('box1') == Y" => "document.getElementById('box1') = Y" else 语句也是如此。 :) 这是我的 jsfiddle:jsfiddle.net/tyler_z_yang/rgjSG/3
  • 搞定了。感谢你的帮助。其中一个问题是我使用了两个等于 (==) 而不是 (=),但是我添加了另一个复选框,就像我在上一条评论中所说的那样,并且搞砸了。最终做 ** 字母 **跨度>
猜你喜欢
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 2015-04-19
  • 2018-04-06
  • 2021-04-07
  • 2016-07-17
  • 2013-09-09
  • 2012-08-17
相关资源
最近更新 更多