字段启用禁用javascript不起作用

Posted

技术标签:

【中文标题】字段启用禁用javascript不起作用【英文标题】:field enable disable javascript not working 【发布时间】:2017-06-12 10:20:22 【问题描述】:

我有两个单选按钮,我想根据用户在单选按钮中选择的值在我的 html 页面上显示一些值。

我的 html 文件:

<form action="">
<input type="radio" name="calenders" value="calendar_details_b2b">B2B
<br>
<input type="radio" name="calenders" value="calendar_details_b2c">B2C
</form>
<div id="calendar_details_b2c" >
   content of B2C
</div>
<div id="calendar_details_b2b">
   content of B2B
</div>

这是运行良好的 JS 小提琴:https://jsfiddle.net/0b0xp5xm/9/

现在当我更改 ID 时,它不起作用,https://jsfiddle.net/vjLnou8h/1/

编辑

我已在我的 rails 应用程序 _form.html.erb 中添加了这段代码,我将在 new.hrml.erb 页面上进行渲染。

<script    src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(document).ready(function() 

  $('input[type=radio][name=calenders]').change(function () 
  $('#calendar_details_b2b').css("display","none");
  $('#calendar_details_b2c').css("display","none");
  console.log($(this).val());
  var fieldToShow = $(this).val();
  $("#" + fieldToShow).css("display","block");
  );

);
</script>

但是还是不行。

【问题讨论】:

由于未添加 jquery 引用而出现错误。 您需要解释“仍然无法正常工作”的实际含义。你有错误吗?你检查过控制台吗? 当我单击任何单选按钮时,隐藏的部分不会出现...忽略 console.log($(this).val());行 【参考方案1】:

添加 JQuery 引用后,它就可以正常工作了。

https://jsfiddle.net/vjLnou8h/2/

<html>
  <head>
    <style>
      #data_Analysis,
      #study_Design 
        display: none;
      
    </style>  
  </head>
  <body>

    <form action="">
      <input type="radio" name="calenders" value="study_Design">B2B
      <br>
      <input type="radio" name="calenders" value="data_Analysis">B2C
    </form>

    <div id="study_Design">content of B2B</div>
    <div id="data_Analysis" >content of B2C</div>


    <!-- It's generally better to put your scripts just before the <body> tag closes
         because by the time the browser gets that far, the DOM has been read. Also,
         it can speed up page load times. -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script>

      $('input[type=radio][name=calenders]').change(function () 
        $('#study_Design').css("display","none");
	    $('#data_Analysis').css("display","none");
	    console.log($(this).val());
	    var fieldToShow = $(this).val();
	    $("#" + fieldToShow).css("display","block");
      );
    </script>
    
  </body>
</html>

【讨论】:

所以我需要在 没有。那是行不通的。您需要在您的 ` 标记集之前添加:&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;(或您从中获取 JQuery 的任何路径)。 (仅供参考,请确保您引用了您计划使用的正确版本的 JQuery - 有关详细信息,请参阅:code.jquery.com。 像这样-- 是的,但您可以省略 type=text/javascript - 这不再需要。 @MohammadShahbaz 您的原始问题已得到解答。如果您需要,请对提供的答案进行投票并发布一个新问题,因为我的答案说明了您的代码无法正常工作的原因。

以上是关于字段启用禁用javascript不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Javascript 隐藏/显示部分在重置时不起作用

启用禁用的输入类型图像不起作用

启用/禁用表单提交按钮不起作用

ng-disabled 在 chrome 中不起作用。Button 没有在 Angular 中禁用

jquery:重置后禁用/启用按钮不起作用

当输入类型为密码时,autocomplete ='off'不起作用,并在其上方输入输入字段以启用自动完成功能