【问题标题】:Hide and show input text using two radio buttons使用两个单选按钮隐藏和显示输入文本
【发布时间】:2019-06-29 11:22:23
【问题描述】:

如果我点击单选按钮deskripsi 输入name 不隐藏,如果我点击单选按钮name 输入deskripsi 不隐藏

<div class="mdl-textfield check-modif mdl-js-textfield mdl-textfield--floating-label">
    <input class="mdl-textfield__input" type="text" id="check-modif">
    <label class="mdl-textfield__label" for="check-modif">Nama atau Kode barang</label>
</div>
<label class="mdl-radio radio-modif-name mdl-js-radio mdl-js-ripple-effect" for="update-name">
    <input type="radio" id="update-name" class="mdl-radio__button" name="options" value="1">
    <span class="mdl-radio__label">Nama</span>
</label>
<label class="mdl-radio radio-modif-description mdl-js-radio mdl-js-ripple-effect" for="update-description">
    <input type="radio" id="update-description" class="mdl-radio__button" name="options" value="2">
    <span class="mdl-radio__label">Deskripsi</span>
</label>

<script>
    $(function() {
        $('div[name="nama"]').hide();

        //show it when the checkbox is clicked
        $('input[id="update-name"]').on('click', function() {
            if ($(this).prop('checked')) {
                $('div[name="nama"]').fadeIn();
            } else if ($('input[id="update-description"]').on('click')) {
                $('div[name="nama"]').hide();
            } else {
                $('div[name="nama"]').hide();
            }

        });

        $('div[name="deskripsi"]').hide();

        $('input[id="update-description"]').on('click', function() {
            if ($(this).prop('checked')) {
                $('div[name="deskripsi"]').fadeIn();
            } else if ($('input[id="update-name"]').on('click')) {
                $('div[name="deskripsi"]').hide();
            } else {
                $('div[name="deskripsi"]').hide();
            }

        });
    });
</script>
<div class="mdl-textfield input-modif-name mdl-js-textfield" name="nama">
    <input class="mdl-textfield__input" type="text" id="nama" name="nama">
    <label class="mdl-textfield__label" for="nama">Nama</label></input>
</div>
<div class="mdl-textfield input-modif-description mdl-js-textfield" name="deskripsi">
    <input class="mdl-textfield__input" type="text" id="deskripsi" name="deskripsi">
    <label class="mdl-textfield__label" for="deskripsi">Deskripsi</label></input>
</div>

谢谢

【问题讨论】:

  • name attribute 存在于与网络请求相关联的表单输入元素上(换句话说,当数据识别在服务器端完成时),主要是表单元素。

标签: jquery material-design-lite


【解决方案1】:

name attribute 存在于与 Web 请求关联的表单输入元素中(换句话说,当数据识别在服务器端完成时),主要是表单元素。

您可以使用 id 属性(在当前文档中应该是 uniq)来识别特定的 div 元素,如果逻辑涉及多个元素,则可以使用类。

以下是实施建议:

$(function() {
      // Cache references to both radio inputs at the top of the DOM-ready
      // event handler making further logic clearer
      let $nameInput = $('input#update-name')
          , $descInput = $('input#update-description')
      ;

      // Attach a single click event handler to both former radio inputs.
      // Depending on which radio button is clicked, the associated content
      // will be shown whereas the content associated to the other radio
      // button will be hidden
      $nameInput.add($descInput).on('click', function() {
          let isName = this === $nameInput[0]
              , $show = isName ? $('#nama-div') : $('#deskripsi-div')
              , $hide = isName ? $('#deskripsi-div') : $('#nama-div')
          ;

          if (this.checked) {
              $show.fadeIn();
              $hide.hide();
          }
      });
  });
/** Set initial _display_ state of both content div as a CSS rule **/
div#nama-div, div#deskripsi-div {display: none}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="mdl-textfield check-modif mdl-js-textfield mdl-textfield--floating-label">
    <input class="mdl-textfield__input" type="text" id="check-modif">
    <label class="mdl-textfield__label" for="check-modif">Nama atau Kode barang</label>
</div>

<label class="mdl-radio radio-modif-name mdl-js-radio mdl-js-ripple-effect" for="update-name">
    <input type="radio" id="update-name" class="mdl-radio__button" name="options" value="1">
    <span class="mdl-radio__label">Nama</span>
</label>

<label class="mdl-radio radio-modif-description mdl-js-radio mdl-js-ripple-effect" for="update-description">
    <input type="radio" id="update-description" class="mdl-radio__button" name="options" value="2">
    <span class="mdl-radio__label">Deskripsi</span>
</label>


<!-- changed name="nama" to id="nama-div" -->
<div class="mdl-textfield input-modif-name mdl-js-textfield" id="nama-div">
    <input class="mdl-textfield__input" type="text" id="nama" name="nama">
    <label class="mdl-textfield__label" for="nama">Nama</label></input>
</div>
<!-- changed name="deskripsi" to id="deskripsi-div" -->
<div class="mdl-textfield input-modif-description mdl-js-textfield" id="deskripsi-div">
    <input class="mdl-textfield__input" type="text" id="deskripsi" name="deskripsi">
    <label class="mdl-textfield__label" for="deskripsi">Deskripsi</label></input>
</div>

【讨论】:

    【解决方案2】:

    您需要将classid 属性赋予div,您不能将name 属性用于div,在您的情况下为namadeskripsi。在下面的代码中,我为divs 都提供了class 属性,您想隐藏特定单选按钮的点击:

    $(function() {
            $('.nama').hide();
    
            //show it when the checkbox is clicked
            $('input[id="update-name"]').on('click', function() {
                if ($(this).prop('checked')) {
                  //show div with class="nama"
                    $('.nama').fadeIn();
                     //hide other div
                     $('.deskripsi').hide();
                } else if ($('input[id="update-description"]').on('click')) {
                  //hide div with class= "nama"
                    $('.nama').hide();
                } else {
                    $('.nama').hide();
                }
    
            });
    
            $('.deskripsi').hide();
    
            $('input[id="update-description"]').on('click', function() {
                if ($(this).prop('checked')) {
                //show div with class="deskripsi"
                    $('.deskripsi').fadeIn();
                    //hide other div
                     $('.nama').hide();
                } else if ($('input[id="update-name"]').on('click')) {
                    $('.deskripsi').hide();
                } else {
                    $('.deskripsi').hide();
                }
    
            });
        });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    <div class="mdl-textfield check-modif mdl-js-textfield mdl-textfield--floating-label">
        <input class="mdl-textfield__input" type="text" id="check-modif">
        <label class="mdl-textfield__label" for="check-modif">Nama atau Kode barang</label>
    </div>
    <label class="mdl-radio radio-modif-name mdl-js-radio mdl-js-ripple-effect" for="update-name">
        <input type="radio" id="update-name" class="mdl-radio__button" name="options" value="1">
        <span class="mdl-radio__label">Nama</span>
    </label>
    <label class="mdl-radio radio-modif-description mdl-js-radio mdl-js-ripple-effect" for="update-description">
        <input type="radio" id="update-description" class="mdl-radio__button" name="options" value="2">
        <span class="mdl-radio__label">Deskripsi</span>
    </label>
    
    
    <div class="nama mdl-textfield input-modif-name mdl-js-textfield" name="nama">
        <input class="mdl-textfield__input" type="text" id="nama" name="nama">
        <label class="mdl-textfield__label" for="nama">Nama</label></input>
    </div>
    <div class="mdl-textfield input-modif-description mdl-js-textfield deskripsi" name="deskripsi">
        <input class="mdl-textfield__input" type="text" id="deskripsi" name="deskripsi">
        <label class="mdl-textfield__label" for="deskripsi">Deskripsi</label></input>
    </div>

    【讨论】:

      猜你喜欢
      • 2020-05-05
      • 1970-01-01
      • 2022-07-01
      • 2020-03-03
      • 1970-01-01
      • 2022-07-01
      • 2017-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多