【问题标题】:Radio button value returns undefined单选按钮值返回未定义
【发布时间】:2019-05-30 21:38:43
【问题描述】:

这些按钮是可见的并且可以工作,但是当点击提交时它应该将选中的单选按钮的值(对于 3 个组中的每一个)分配给一个变量,但返回的值始终是未定义的。

由于一组按钮,我希望输出是值或包含值的对象

severityFormValue.on("click", (e) => {
  const loggedVia = $('input[name=loggedVia]:checked').val()
  const allStable = $('input[name = allStable]:checked').val()
  const EnvDown = $('input[name = EnvDown]:checked').val()
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div class="dropdown">
       <button class="dropbtn" id="CCR_DACEbtn">CCR DACE ▼</button>
       <div id="drowdownCCR_DACEID" class="dropdown-content">
               Submitted by:
               <input type="radio" name="loggedVia" value="phone" checked> phone
               <input type="radio" name="loggedVia" value="email"> email<br>
               All services stable?
               <input type="radio" name="allStable" value="Yes"> Yes 
               <input type="radio" name="allStable" value="No" checked> No 
               <input type="radio" name="allStable" value="N/A"> N/A <br>
               Environment Down?
               <input type="radio" name="EnvDown" value="Yes"> Yes 
               <input type="radio" name="EnvDown" value="No" checked> No 
               <input type="radio" name="EnvDown" value="N/A"> N/A <br>
               <button type="button" id="severityFormSubmit" >Submit</button>
       </div>
   </div>`

【问题讨论】:

  • 什么是severityFormValue
  • 分配给按钮 severityFormSubmit 的变量
  • 如果你做$('input[name="loggedVia"]:checked').value怎么办? allStableenvDown 相同。
  • @StephanSchrijver 然后你会得到 undefined 因为 jQuery 对象没有 value 属性
  • @StephanSchrijver 之前试过,没有变化

标签: jquery html typescript radio-button undefined


【解决方案1】:

第二组无线电输入的名称是AllStable,而不是allStable,因此选择器不会找到它们,因为它区分大小写。修复它,您显示的代码可以正常工作:

var severityFormValue = $('#severityFormSubmit');

severityFormValue.on("click", (e) => {
  const loggedVia = $('input[name="LoggedVia"]:checked').val()
  const allStable = $('input[name="AllStable"]:checked').val();
  const envDown = $('input[name="EnvDown"]:checked').val()

  console.log(loggedVia);
  console.log(allStable);
  console.log(envDown);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="dropdown">
  <button class="dropbtn" id="CCR_DACEbtn">CCR DACE ▼</button>
  <div id="drowdownCCR_DACEID" class="dropdown-content">
    Submitted by:
    <input type="radio" name="LoggedVia" value="phone" checked> phone
    <input type="radio" name="LoggedVia" value="email"> email<br> 
    
    All services stable?
    <input type="radio" name="AllStable" value="Yes"> Yes
    <input type="radio" name="AllStable" value="No" checked> No
    <input type="radio" name="AllStable" value="N/A"> N/A <br> 
    
    Environment Down?
    <input type="radio" name="EnvDown" value="Yes"> Yes
    <input type="radio" name="EnvDown" value="No" checked> No
    <input type="radio" name="EnvDown" value="N/A"> N/A <br>
    <button type="button" id="severityFormSubmit">Submit</button>
  </div>
</div>

另请注意,我将EnvDown 变量名称更改为envDown,并将loggedVia 名称属性更改为LoggedVia,以保持与其对应值的一致性。

【讨论】:

  • 仍然在应用程序中返回 undefined,是的,这是我没有注意到的一个重大错误,但是loggedVia 应该可以工作..
  • 在这种情况下,您可以编辑问题以包含重现问题的相关代码。
  • 我认为不应该有任何其他代码影响单选按钮的返回值
  • 不幸的是,从您在问题中显示的代码中,上面的答案解决了您所显示的问题,正如您从工作 sn-p 中看到的那样。如果它对您不起作用,则一定是其他一些潜在问题。
  • 这很奇怪,因为值是用正确的方法直接分配的,但甚至警告它们是未定义的。当我删除值并警告输入 []:检查它返回对象对象。所以我在想 - 也许因为它是一组收音机,它会创建一个比需要的值更多的对象?
猜你喜欢
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
相关资源
最近更新 更多