【问题标题】:Why is my checkbox input always the same?为什么我的复选框输入总是一样的?
【发布时间】:2011-06-19 22:19:08
【问题描述】:

我有一个表单(在下面发布),为复选框提交的值没有改变。我将 value 属性添加到输入以尝试缓解此问题,但现在调试器不再报告“活动”,而是报告设置为“value1”的任何值,无论该框是否被选中。

<form enctype="multipart/form-data" id="f0" method="post" action="">
  <div class="t1">
    <div class="t1_r1">
      <div class="t1_c1"><p class="c"></p></div>
      <div class="t1_c1"><p class="c">Email</p></div>
      <div class="t1_c1"><p class="c">Password</p></div>
      <div class="t1_c1"><p class="c">Keep me logged in<input class="cb" type="checkbox" name="f0a" value="value1" /></p></div>
    </div>
    <div class="t1_r1">
      <div class="t1_c1"><input class="te6" type="text" name="f0b" /></div>
      <div class="t1_c1"><input class="te6" type="password" name="f0c" /></div>
      <div class="t1_c2"><a id="f0d" href ="javascript:void(0)" class='but'>Login</a></div>
    </div>
    <div id=fb1 class="t1_r1">
    </div>
  </div>
</form>

我使用这个函数将元素放在一个文本字符串中,该函数对其他两个输入都很好。我更新了它以反映答案。这还没有经过测试。

function is(a)
{
  var b = '';
  var c = document.forms[a].elements;
  for (i = 0; i < c.length; i++)
  {
    if (c[i].type == 'checkbox' && c[i].checked == false)
    {
      b += c[i].name + "=NULL&";
    }
    else
    { 
      b += c[i].name + "=" + c[i].value + "&";
    }
  }
  b = b.slice(0, -1);
  return b;
}

【问题讨论】:

  • 嗯,这似乎违反直觉,against the spec(至少根据 html 4)。您能否发布一个重现此问题的现场演示的链接?
  • 抱歉,没有现场演示,我尝试将其从

    标记中取出,但这没有帮助。我应该知道的复选框有什么特别之处吗?

  • 只是,根据 W3(按照我的第一条评论中的链接)“[当] 提交表单时,只有“打开”复选框控件才能成功。”所以我不明白为什么你的复选框会被提交,不管它是否被选中。

标签: forms xhtml input checkbox


【解决方案1】:

这是因为对于复选框,.value 始终返回您在 HTML 中设置的 value 属性中的文本。您需要做的是检查checked 属性以查看它是否为真。比如:

function is(a) {
   var b = '';
   var c = document.forms[a].elements;
   for (i = 0; i < c.length; i++) {
      var value = "";
      if (c[i].type == "checkbox") {
         value = (c[i].checked) ? c[i].value : "";
      } else {
         value = c[i].value;
      }
      b += c[i].name + "=" + value + "&";
   }
   b = b.slice(0, -1);
   return b;
}

【讨论】:

    【解决方案2】:

    复选框尽管外观简单,但比文本更复杂 - Sending Checkbox Values Link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-24
      • 1970-01-01
      • 2018-04-01
      相关资源
      最近更新 更多