Хобрук: Ваш путь к мастерству в программировании

установите/снимите флажок, чтобы показать/скрыть элемент входного файла с помощью javascript

Я пытаюсь показать и скрыть элемент входного файла при установке/снятии флажка с помощью javascript. Я хочу установить флажок c, чтобы скрыть входной файл, и снять флажок, чтобы показать входной файл. Для других флажков он должен отображаться. Каков наилучший способ реализовать это? что я делаю неправильно в своем коде? Я открыт для других предложений. Заранее спасибо.

Мой HTML-код:

 <div class="row">
        <div class="col-xs-4">
            <div class="checkbox">
                <label><b>  A:</br>

                       <label><input type="checkbox" name="a" value="a"  id="show_id" onclick="showHide()">  Aa</label></br>
                        <label><input type="checkbox" name="a" value="a" id="show_id" onclick="showHide()">  Ab</label>
                    </b></label>
            </div>
        </div>

        <div class="col-xs-4">
            <div class="checkbox">
                <label><b>  B: </br>

                       <label><input type="checkbox" name="b" value="b" id="show_id" onclick="showHide()">  Ba</label></br>
                        <label><input type="checkbox" name="b" value="b" id="show_id" onclick="showHide()">  Bb</label>
                    </b></label></br>
            </div>
        </div>

        <div class="col-xs-4">
            <div class="checkbox">
                <label><b>  C: </br>

                <label><input type="checkbox"  name="c" value="c" id="hide_id" onclick="showHide()">   C </label></b></label>
            </div>
        </div>

    </div>

и то, что я пытаюсь показать и скрыть, щелкнув (чтобы скрыть) флажок c и снова щелкнув его (чтобы показать), это ниже, чтобы он снова мог быть виден для других 4 флажков:

 <div class="form-group col-xs-8">
<label id="visible" name="hidden"><b> files: </b></label></br>
<input class="form-control" type="file" name="hidden" id="visible"/> </br>
   </div>

я пробовал это в JS:

 function showHide() {


    var checkbox_A_B = document.getElementById("show_id");
    var checkbox_C = document.getElementById("hide_id");

    var hiddenBrowserFiles = document.getElementsByName("hidden");
    var visibleBrowserFiles = document.getElementById("visible");

    for(var i = 0; i < hiddenBrowserFiles.length; i++)
    {
        if(checkbox_C.checked)
        {
            hiddenBrowserFiles[i].style.display = "none";
        }
        else
        {
            visibleBrowserFiles[i].style.display = "block";
        }

        if(checkbox_A_B.checked)
        {
            visibleBrowserFiles[i].style.display = "block";
        }

    }
}
10.04.2017

  • во-первых, вы управляете только ярлыком, а не файлом. И для каждого файла есть один или несколько флажков. Если есть только один флажок «C», то ваша логика немного абсурдна. 10.04.2017
  • ваш ''visibleBrowserFiles в вашем случае не определен. Также вы используете имя и идентификаторы, которые очень запутывают 10.04.2017
  • Как я уже говорил, я новичок в javascript или html-коде. у меня есть несколько флажков, как вы можете видеть в моем html-коде. большое спасибо ваш код помог мне 10.04.2017
  • старайтесь, чтобы один идентификатор и его имя были уникальными (не такими, как видимые, скрытые), также старайтесь избегать имен. Любая другая помощь, которая вам нужна по этому поводу? 10.04.2017
  • @ Gaurav Chaudhary Я просто пытаюсь найти способ сделать так, чтобы один из флажков группы A или B можно было проверить, а не оба одновременно. Любое предложение? Спасибо еще раз 10.04.2017

Ответы:


1

Попробуй это .

  1. id уникален. Попробуйте использовать функцию с this.
  2. Итак, чтобы проверить имя идентификатора и применить условие.
  3. это show id только с block
  4. его hide_id применяется с проверкой и условием снятия отметки

function showHide(that) {
  var hiddenBrowserFiles = document.getElementsByName("hidden");

  for (var i = 0; i < hiddenBrowserFiles.length; i++) {
    if (that.id == 'show_id') {
      if (that.checked) {
        hiddenBrowserFiles[i].style.display = "show";
      } 
}
else{
      if (that.checked) {
        hiddenBrowserFiles[i].style.display = "none";
      } 
      else{
       hiddenBrowserFiles[i].style.display = "block";
      }
}
  }
}
<div class="row">
  <div class="col-xs-4">
    <div class="checkbox">
      <label><b>  A:</br>

                       <label><input type="checkbox" name="a" value="a"  id="show_id" onclick="showHide(this)">  Aa</label></br>
      <label><input type="checkbox" name="a" value="a" id="show_id" onclick="showHide(this)">  Ab</label>
      </b>
      </label>
    </div>
  </div>

  <div class="col-xs-4">
    <div class="checkbox">
      <label><b>  B: </br>

                       <label><input type="checkbox" name="b" value="b" id="show_id" onclick="showHide(this)">  Ba</label></br>
      <label><input type="checkbox" name="b" value="b" id="show_id" onclick="showHide(this)">  Bb</label>
      </br>
      </label>
      </br>
    </div>
  </div>

  <div class="col-xs-4">
    <div class="checkbox">
      <label><b>  C: </br>

                <label><input type="checkbox"  name="c" value="c" id="hide_id" onclick="showHide(this)">   C </label></b>
      </label>
    </div>
  </div>

</div>


<div class="form-group col-xs-8">
  <label id="visible" name="hidden"><b> files: </b></label></br>
  <input class="form-control" type="file" name="hidden" id="visible" /> </br>
</div>

Для более упрощенной версии .одна строка if condition

function showHide(that) {
  var hiddenBrowserFiles = document.getElementsByName("hidden");

  for (var i = 0; i < hiddenBrowserFiles.length; i++) {
    hiddenBrowserFiles[i].style.display = (that.id == 'show_id') ? (that.checked) ? "show" : '' : (that.checked) ? 'none' : 'block';

  }
}

обновленный ответ radio button

function showHide(that) {
  var hiddenBrowserFiles = document.getElementsByName("hidden");

  for (var i = 0; i < hiddenBrowserFiles.length; i++) {
    if (that.id == 'show_id') {
      if (that.checked) {
        hiddenBrowserFiles[i].style.display = "show";
      }
    } else {
      if (that.checked) {
        hiddenBrowserFiles[i].style.display = "none";
      } else {
        hiddenBrowserFiles[i].style.display = "block";
      }
    }
  }
}
<div class="row">
  <div class="col-xs-4">
    <div class="checkbox">
      <label><b>  A:</br>

                           <label><input type="radio" name="a" value="a"  id="show_id" onclick="showHide(this)">  Aa</label></br>
      <label><input type="radio" name="a" value="a" id="show_id" onclick="showHide(this)">  Ab</label>
      </b>
      </label>
    </div>
  </div>

  <div class="col-xs-4">
    <div class="checkbox">
      <label><b>  B: </br>

                           <label><input type="radio" name="b" value="b" id="show_id" onclick="showHide(this)">  Ba</label></br>
      <label><input type="radio" name="b" value="b" id="show_id" onclick="showHide(this)">  Bb</label>
      </br>
      </label>
      </br>
    </div>
  </div>

  <div class="col-xs-4">
    <div class="checkbox">
      <label><b>  C: </br>

                    <label><input type="checkbox"  name="c" value="c" id="hide_id" onclick="showHide(this)">   C </label></b>
      </label>
    </div>
  </div>

</div>


<div class="form-group col-xs-8">
  <label id="visible" name="hidden"><b> files: </b></label></br>
  <input class="form-control" type="file" name="hidden" id="visible" /> </br>
</div>

10.04.2017
  • Я также пробую ваш, и он отлично работает для меня. Большое спасибо за Вашу помощь 10.04.2017
  • @R.Van также смотрите упрощенную версию условия if, обратитесь к обновленному ответу. 10.04.2017
  • @ прасад большое спасибо!!! еще один вопрос: есть ли способ сделать так, чтобы один из флажков группы A или B можно было проверить, а не оба одновременно? это будет очень круто 10.04.2017
  • @R.Van. Вам нужна радиокнопка. Смотрите мой обновленный ответ. 10.04.2017
  • Еще раз спасибо!!! Я делал это раньше с радиокнопками, но я думал, что это будет возможно и с флажком, откуда мой вопрос. Я замечаю, что радиокнопка не позволяет поставить галочку и снять галочку. 10.04.2017
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..