True/fasle у инпута

kesh_mir

Всем привет, такой вопрос. Есть два инпута. Можно ли как-нибудь сделать так, чтобы не меняя js (попросили не трогать js), а манипулируя только html менять параметр true/false?

html

<p>Отдельно</p>
<p>Вместе</p>

Javascript

var params = {
    splitDates: false
}
3 ответа

kesh_mir

Если понимать ваше задание буквально, то есть не трогать JavaScript код, который написан на странице, а обойтись манипуляциями только HTML, то могу предложить один обходной способ.

  1. Создаем файл нашего будущего скрипта, меняющего значение инпута, для работы на требуемой страницей myscript.js

  2. Пишем необходимый код в созданный файл myscript.js, к примеру такой:

    document.addEventListener('DOMContentLoaded', function(){
        var ch = document.getElementsByName("splitDates");
        for(var index = 0; index < ch.length; index++){
            if(ch[index].checked){
                ch[index].checked = false;
            }else{
                ch[index].checked = true;
            }
        }
    });

    Про getElementsByName и DOMContentLoaded можно почитать тут:

  3. Подключаем файл на странице, при этом немного поменяем разметку, добавив

Что получается в результате? JavaScript-код, написанный ранее - не трогали. Манипулировали на странице только HTML, добавили новый файл. Думаю мысль и приведенный пример достаточно ясны.

Либо, просто, взять блок кода, содержащий инпуты:

<p>Отдельно</p>
<p>Вместе</p>

заменить руками на следующий:

<p>Отдельно</p>
<p>Вместе</p>

Просто изменить значение value у тэга input на противоположное.


kesh_mir

Вы можете не трогать имеющиеся скрипты. Просто допишите новые которые будут управлять этими значениями. На html такого сделать динамически нельзя.


kesh_mir

Так нельзя. Вот вариант на jQuery. Если надо могу на чистом JS дописать.

var params = {
    splitDates: false,
    joinDates: true
}

$("input[type=radio]").click(function(){
  $("input[type=radio]").each(function(){
 $("input[type=radio]").val(params.splitDates);
  });
  $(this).val(params.joinDates);
  $("#output").val($(this).parent("p").text() + " = " + $(this).val() + " ; " + $("input[type=radio]").not($(this)).parent().text() + " = " + $("input[type=radio]").not($(this)).val());
});
input[type=text] {width: 300px;}
<p>Отдельно</p>
<p>Вместе</p>

licensed under cc by-sa 3.0 with attribution.