【问题标题】:Can't post value using innerHTML无法使用 innerHTML 发布价值
【发布时间】:2014-09-18 10:44:40
【问题描述】:

这是我脚本的一部分,用于更改我的选择值:

document.getElementById('poids').innerHTML = '<select onchange="peso();" class="form-control" required name="cat_poid"><option value="">Selectioner le poids</option><option value="-24">-24</option><option value="-29">-29</option><option value="-35">-35</option><option value="-41">-41</option><option value="+41">+41</option></select>';

HTML:

<b>Poids: <div id="poids"><select class="form-control" name="cat_poid" required><option value="1">Selectioner le poids</option></select></div></b>

我的问题是我正在创建一个表单并且我有一个选择值会改变。 所以要更改我使用 innerHTML 的值,它工作得很好。但是这些值不会发布到表单提交的下一页。

调用脚本后,我的 DIV 的内容会发生变化,并且我拥有所需的值。看起来不可能发布来自 innerHTML 的值。

谁能帮忙?

【问题讨论】:

  • 更新您的问题,将代码部分缩进 4 个空格。
  • 你有提交过程的地方
  • 这是我第一次在这里发布东西,对不起,我不知道4个空格...谢谢...

标签: javascript php jquery html forms


【解决方案1】:

要更新 select 的选定项,您必须设置它的 selectedIndex,它是基于 0 的。同样要添加/删除项目,您必须创建 DOM option 元素并添加它们,或者完全更新 select 元素:

<div id="container">
  <select id="select" name="weight">
    <option>select the weight</option>
    ...
  </select>
</div>

在 JS 中操作:

// update with innerHTML:
document.getElementByID('container').innerHTML = '<select...>...</select>';
// or add an item with DOM model:
var option = document.createElement('option');
option.text = '35-40';
option.value = '35-40';
document.getElementByID('select').add(option);

// to select a specific option:
document.getElementByID('select').selectedIndex = 1; // selects the 2nd option

【讨论】:

  • 我完全按照你的做法试了试,但还是不行。问题不是添加选项,而是发布选项的值。 InnerHTML 工作正常,并且选项具有它们的价值。 document.getElementById('poids').innerHTML = '';当我发布我的 FORM 时,只会发布来自该 SELECT 的值。您发布的方式让我无法正常工作,甚至无法增加我能够做到的价值。
  • 当你说 post 时,它是 HTML 帖子,例如点击 submit 并让浏览器转到 action URL,还是某种 JS 帖子?
  • 没错,我有
  • 我的表单中没有被 innerHTML 更改的任何内容都可以正确发布...。唯一没有将值发布到下一页的项目是由 innerHTML 更改的选择 ...
  • 嗯很奇怪,它应该可以工作。不张贴到下一页?你能看看 Chrome 检查器并检查网络选项卡中的 POST 请求正文以确保它没有被发送吗?
【解决方案2】:

不要完全改变 div 的 innerHTML。只需尝试仅添加或删除选项即可。

【讨论】:

    【解决方案3】:

    我可以创建一个“肮脏的解决方案”......它非常丑陋,我相信有更好的方法来做到这一点。 由于我要发布到下一页但不可能获得价值,所以我做了这样的事情:

    刚刚将其添加到我的表单中:

    <input type="hidden" name="peso">
    

    javascript:

    function peso(){
    var elem = document.getElementById("peso");
    var pesos = document.getElementById("cat_poid").value;
    elem.value = pesos;
    };
    

    我的innerHTML:

    document.getElementById('poids').innerHTML = '<select onchange="peso();" class="form-control" 
    required name="cat_poid"><option value="">Selectioner le poids</option><option 
    value="-24">-24</option><option value="-29">-29</option></select>';
    

    还有下一页

    $poid = $_POST['peso'];
    

    但如果我尝试获取像 $_POST['cat_poid']; 这样的值我什么都没有...我什至使用 FireFox 的 TemperData 来准确获取和编辑 POST 值,并且没有 cat_poid。

    奇怪,但“肮脏的解决方案”奏效了。

    谢谢大家!!!!解决了^^

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      • 2021-09-26
      • 2017-05-30
      • 2014-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多