【问题标题】:javascript serialize checkbox valuejavascript序列化复选框值
【发布时间】:2015-04-21 12:57:01
【问题描述】:

我在这个项目中有一个表单,我正在序列化,以便我可以将它传递给 PHP 并根据输入值进行一些数据库调用。一切正常,直到我在表单中添加了一个复选框并尝试对其进行序列化。

<input type="checkbox" name="reduceHolOT" id="reduceHolOT" checked="checked" ></input>

我怎样才能得到这个复选框的选中或值属性到一个

$('form').serialize()

连同我表单中的其他数据?

【问题讨论】:

  • 你想做什么?为什么不直接将表单提交给 php?
  • 为我工作jsfiddle.net/hX7NS
  • 在我网页中的 20 个不同事件上,javascript 将序列化所有内容,并根据失去焦点或点击的内容将其发布到各种 php 文件中。我正在使用ajax。每个 php 文件使用序列化的不同部分,最后一个使用复选框值进行数据库调用。
  • 哇这个网站真棒!!谢谢。那么它会给我一个 on 或 off 的值吗?
  • 它仍然无法正常工作,因为如果您取消选中该复选框然后尝试运行它,则警报为空白。 jsfiddle.net/hX7NS/2

标签: javascript serialization checkbox checked


【解决方案1】:

您应该为您的复选框添加一个值属性。你知道的好习惯。

但如果选中复选框,则序列化应该将字符串“reduceHolOT=on”放入结果中。如果不勾选,不管你有没有值,都不会显示出来。

【讨论】:

  • 可以通过在value="0"的复选框前添加一个同名的隐藏标签来解决这个问题。如果选中该复选框,它将覆盖隐藏值。如果不是,您将得到 0。
  • @Stephen 你知道,那肯定行得通,但我刚刚习惯了有条件地测试这些东西。
  • 是的,我意识到这就是它的工作方式,并在 php 中为 if ['reduceHolOT'] 未设置的情况添加了 if 语句。然后我只是手动设置变量
【解决方案2】:

也许你应该试试这个:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>serialize demo</title>
  <style>
  body, select {
    font-size: 12px;
  }
  form {
    margin: 5px;
  }
  p {
    color: red;
    margin: 5px;
    font-size: 14px;
  }
  b {
    color: blue;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>

<form>
  <select name="single">
    <option>Single</option>
    <option>Single2</option>
  </select>

  <br>
  <select name="multiple" multiple="multiple">
    <option selected="selected">Multiple</option>
    <option>Multiple2</option>
    <option selected="selected">Multiple3</option>
  </select>

  <br>
  <input type="checkbox" name="check" value="check1" id="ch1">
  <label for="ch1">check1</label>
  <input type="checkbox" name="check" value="check2" checked="checked" id="ch2">
  <label for="ch2">check2</label>

  <br>
  <input type="radio" name="radio" value="radio1" checked="checked" id="r1">
  <label for="r1">radio1</label>
  <input type="radio" name="radio" value="radio2" id="r2">
  <label for="r2">radio2</label>
</form>

<p><tt id="results"></tt></p>

<script>
  function showValues() {
    var str = $( "form" ).serialize();
    $( "#results" ).text( str );
  }
  $( "input[type='checkbox'], input[type='radio']" ).on( "click", showValues );
  $( "select" ).on( "change", showValues );
  showValues();
</script>

</body>
</html>

Source Link

【讨论】:

  • 你确定吗?你用过吗?
  • 发帖前先自己检查
猜你喜欢
  • 2011-07-04
  • 1970-01-01
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-03
  • 2011-08-29
相关资源
最近更新 更多