【问题标题】:Multiple text field, show/hide based on radio selection (Html,JS)多个文本字段,根据单选选择显示/隐藏(Html,JS)
【发布时间】:2019-12-19 18:32:29
【问题描述】:

我现在正在处理form 并遇到以下问题。

问题

我在同一页面上有多个问题,答案选项完全相同(是/否/也许),其中之一是“也许”。在用户检查了radio-button 或称为“可能”的check-box 之后,应该会出现text field。我已经实现了一个javascript,但它似乎不起作用。当有多个文本字段和单选按钮时,我真的不知道如何编程。

我对 HTML/Jquery/Javascript/CSS 还很陌生。

如何做到这一点?我知道有人问过类似的问题,但此时我真的一无所知。

非常感谢您的支持!

[编辑] 我尝试提供相同的 ID,但它似乎不起作用。

下面是代码: http://jsfiddle.net/03gkgfah/1/

这是表单的匿名摘录(我不是故意这么简单的,所以你可以有一个更好的概述):

   <fieldset data-mini="false" data-inline="true">
<legend>1. Test question 1</legend>
  <div class="ui-grid-b ui-responsive">
   <div class="ui-block-a">
    <input name="Teil01_Frage01" id="tUmfrage01_p01_f01_q01_radio01" value="yes" type="radio">
    <label for="tUmfrage01_p01_f01_q01_radio01">Yes</label>
   </div>
   <div class="ui-block-b">
    <input name="Teil01_Frage01" id="tUmfrage01_p01_f01_q01_radio02" value="no" type="radio">
    <label for="tUmfrage01_p01_f01_q01_radio02">No</label>
   </div>
   <div class="ui-block-a">
    <input name="Teil01_Frage01" id="tUmfrage01_p01_f01_q01_radio03" value="maybe" type="radio">
    <label for="tUmfrage01_p01_f01_q01_radio03">Maybe:</label>
   </div>
   <div class="ui-block-b" id="maybe_on">
    <input name="Teil01_Frage01" id="tUmfrage01_p01_f01_q01_textinput01" value="" type="text" maxlength="150" placeholder="maybe...">
   </div>
  </div>
</fieldset>


   <fieldset data-mini="false" data-inline="true">
<legend>2. Test question 2?</legend>
  <div class="ui-grid-b ui-responsive">
   <div class="ui-block-a">
    <input name="Teil01_Frage02" id="tUmfrage01_p01_f01_q02_radio01" value="yes" type="radio">
    <label for="tUmfrage01_p01_f01_q02_radio01">Yes</label>
   </div>
   <div class="ui-block-b">
    <input name="Teil01_Frage02" id="tUmfrage01_p01_f01_q02_radio02" value="no" type="radio">
    <label for="tUmfrage01_p01_f01_q02_radio02">No</label>
   </div>
   <div class="ui-block-a">
    <input name="Teil01_Frage02" id="tUmfrage01_p01_f01_q02_radio03" value="maybe" type="radio">
    <label for="tUmfrage01_p01_f01_q02_radio03">Maybe:</label>
   </div>
   <div class="ui-block-b" id="maybe_on">
    <input name="Teil01_Frage02" id="tUmfrage01_p01_f01_q02_textinput01" value="" type="text" maxlength="150" placeholder="maybe...">
   </div>
  </div>
</fieldset>


<fieldset data-mini="false" data-inline="true">
<legend>2. Test question 3?</legend>
  <div class="ui-grid-b ui-responsive">
   <div class="ui-block-a">
    <input name="Teil01_Frage03" id="tUmfrage01_p01_f01_q03_radio01" value="yes" type="radio">
    <label for="tUmfrage01_p01_f01_q03_radio01">Yes</label>
   </div>
   <div class="ui-block-b">
    <input name="Teil01_Frage03" id="tUmfrage01_p01_f01_q03_radio02" value="no" type="radio">
    <label for="tUmfrage01_p01_f01_q03_radio02">No</label>
   </div>
   <div class="ui-block-a">
    <input name="Teil01_Frage03" id="tUmfrage01_p01_f01_q03_radio03" value="maybe" type="radio">
    <label for="tUmfrage01_p01_f01_q03_radio03">Maybe:</label>
   </div>
   <div class="ui-block-b" id="maybe_on">
    <input name="Teil01_Frage03" id="tUmfrage01_p01_f01_q03_textinput01" value="" type="text" maxlength="150" placeholder="maybe...">
   </div>
  </div>
</fieldset>

.css:

#sonstiges_on{display:none;}

Javascript:

$(document).ready(function(){
$("#maybe_on").hide();
$("input:radio[name*='Teil']").change(function(){//*=   to search for a substring
                                                //='Teil' because the name of the buttons begin with Teil
                                                //for example Teil01_Frage01
        if(this.value == 'maybe' && this.checked){
          $("#maybe_on").show();
        }else{
          $("#maybe_on").hide();
        }
}); });

【问题讨论】:

  • id 应该是唯一的,您在所有这些上都使用了“maybe_on”,还有$("input:radio[name="Teil01_Frage01") 使用单引号作为双引号之一

标签: javascript jquery html css radio-button


【解决方案1】:

如 cmets 中所述,ID 必须是唯一的,并且您的可能单选按钮共享相同的 ID。除此之外,您可以使用以下 jQuery:

$(document).ready(function () {
    $(".maybe_on").hide();
    $("input:radio[name^='Teil01_']").change(function () {
        $(this).closest('.ui-grid-b.ui-responsive').find('.maybe_on').toggle((this.value == 'maybe' && this.checked));
    });
});

jsFiddle example

【讨论】:

  • 非常感谢您的努力和时间 :) 问题已解决。最后一个问题......我也有一个“可能”复选框,但遗憾的是它不起作用。另一方面,所有单选按钮“可能”都可以与上述代码完美配合。你对如何做到这一点有什么建议吗?谢谢。
  • 没关系,我刚刚添加了另一个 javacode,其中我将“radio”替换为“checkbox”,并且似乎运行良好。非常感谢您的帮助!
【解决方案2】:

创建了一个页面内 Javascript 函数,用于检查是否点击了相关输入字段。如果是,它会显示“可能”输入。

function yesnoCheck() {
if (document.getElementById('tUmfrage01_p01_f01_q01_radio03').checked) {
    document.getElementById('maybe_on').style.display = 'block';
}
else document.getElementById('maybe_on').style.display = 'none';

}

编辑 http://jsfiddle.net/sanova/03gkgfah/15/

【讨论】:

  • 当你点击第二个和第三个问题时会发生什么?
  • 我没有编写这些代码,我刚刚更新了 JS 并编辑了我的答案以包含它们@j08691
  • 这种工作,但如果你选择也许,然后将答案更改为是或否,也许保持打开状态。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-12
  • 2019-10-19
  • 1970-01-01
  • 2023-03-22
  • 2021-10-01
  • 2019-12-22
  • 2017-02-02
相关资源
最近更新 更多