【问题标题】:Losing data on formemail when eliminating duplicate values from multiple Select Lists从多个选择列表中删除重复值时丢失formmail上的数据
【发布时间】:2020-01-30 08:29:53
【问题描述】:

我正在使用上面提供的脚本示例,它在输入页面上运行良好。

<script>
    function disableValue(str){
                var dis1=document.getElementsByTagName("option");
                 for(var i=0;i<dis1.length;i++){
                        if(dis1[i].value==str){
                             dis1[i].disabled=true;
                        }
                 }
                return true;
    }

</script>

我有 18 个单独的选择列表,每个选择列表都以相同的方式寻找用户输入,从 18-1 对项目进行排名。一旦使用了一个数字,它就会变灰,并且在随后的选择列表中完全不可用。

        <select onchange="return disableValue(this.value)" name="game01value">
          <option value="--" >--</option>
          <option value="18"  class="go18">18</option>
          <option value="17"  class="go17">17</option>
          <option value="16"  class="go1"6>16</option>
          <option value="15"  class="go15">15</option>
          <option value="14"  class="go14">14</option>
          <option value="13"  class="go13">13</option>
          <option value="12"  class="go12">12</option>
          <option value="11"  class="go11">11</option>
          <option value="10"  class="go10">10</option>
          <option value="09"  class="go9">09</option>
          <option value="08"  class="go8">08</option>
          <option value="07"  class="go7">07</option>
          <option value="06"  class="go6">06</option>
          <option value="05"  class="go5">05</option>
          <option value="04"  class="go4">04</option>
          <option value="03"  class="go3">03</option>
          <option value="02"  class="go2">02</option>
          <option value="01"  class="go1">01</option>
     </select>

但是,在提交输入后,创建的formemail 上的game01value 和其他gameXXvalue 条目丢失。如果我删除脚本,我会收到如下条目:

1. contest = NFL Week 4 (18 Games)
2. emailaddress = boneman@unforgettable.com
3. game01 = Eagles
4. game01value = 18
5. game02 = USC Trojans
6. game02value = 17
7. game03 = Virginia Cavaliers
8. game03value = 16
9. game04 = at Oregon State Beavers
10. game04value = 15

但是当我插入脚本以消除重复值时,相同的用户输入会导致:

1. contest = NFL Week 4 (18 Games)
2. emailaddress = boneman@unforgettable.com
3. game01 = Eagles
4. game02 = USC Trojans
5. game03 = Virginia Cavaliers
6. game04 = at Oregon State Beavers

由于某种原因,该脚本不仅从其他选择列表中删除了输入数字,而且还从我的 formmail 中删除了它。

我的提交代码是:

<input type="submit" name="submit" value="Print and Submit Football Pool" onclick = window.print();>
<input type="reset" name="reset" value="Reset" >       
<input type="hidden" name="thankyou_url" value="http://www.xxxxxxx/Thank You for Your 
Entry.html">

有没有办法保留formemail上的输入数据选择,同时消除附加选择列表中的选择值?

谢谢

【问题讨论】:

    标签: javascript select input html-select onchange


    【解决方案1】:

    您好,我猜是因为该选项被禁用,所以您用来从表单中取出数据的原因是忽略了禁用的字段。

    所以我看到你必须选择。

    1. 更改从表单收集数据的方式。

    2. 这可以更简单一些,而不是禁用选定的选项,使用 display none 或有一个可以隐藏它们的类,这个不是很漂亮,但它应该给你你想要的东西,而不需要做任何重大的改变到代码。

    您可以使用这样的代码为 div 添加样式:

    document.getElementById("myDIV").classList.add("mystyle");
    

    或者 如果您不希望将您的代码用于更直接的方法 我认为您可以将代码中的 dispabled = true 替换为:

    document.getElementById('answer-12702744').style.display = 'none;'
    

    【讨论】:

    • 谢谢,一旦我将 Disabled 更改为 Hidden,它就可以完美运行!
    • 我注意到的一件事是,如果用户改变了他们对选择的想法,现在隐藏的值不会返回到列表中。有没有办法在隐藏值后取消隐藏?
    • 嗯,是的,我猜测快速而肮脏的方法是取消全选以取消隐藏该选项中的所有其他值。像 if (selected hide),如果未选中则移除隐藏。我必须承认应该有更好的方法来做到这一点,这种类型的写作只会导致进一步的麻烦。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多