Значение динамического изменения слайдера после включения onbox на флажках + кнопки

Я мог бы сделать это в JUnit Test Setup.

Я хотел протестировать фасад Hibernate, поэтому я искал общий способ сделать это. Обратите внимание, что фасад также реализует общий интерфейс. Здесь T - класс базы данных, а U - первичный ключ. Ifacade<T,U> - это фасад для доступа к объекту базы данных T с первичным ключом U.

public abstract class GenericJPAController<T, U, C extends IFacade<T,U>>

{
    protected static EntityManagerFactory emf;

    /* The properties definition is straightforward*/
    protected T testObject;
    protected C facadeManager;

    @BeforeClass
    public static void setUpClass() {


        try {
            emf = Persistence.createEntityManagerFactory("my entity manager factory");

        } catch (Throwable ex) {
            System.err.println("Failed to create sessionFactory object." + ex);
            throw new ExceptionInInitializerError(ex);
        }

    }

    @AfterClass
    public static void tearDownClass() {
    }

    @Before
    public void setUp() {
    /* Get the class name*/
        String className = ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[2].getTypeName();

        /* Create the instance */
        try {
            facadeManager = (C) Class.forName(className).newInstance();
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
            Logger.getLogger(GenericJPAController.class.getName()).log(Level.SEVERE, null, ex);
        }
        createTestObject();
    }

    @After
    public void tearDown() {
    }

    /**
     * Test of testFindTEntities_0args method, of class
     * GenericJPAController<T, U, C extends IFacade<T,U>>.
     * @throws java.lang.ClassNotFoundException
     * @throws java.lang.NoSuchMethodException
     * @throws java.lang.InstantiationException
     * @throws java.lang.IllegalAccessException
     */
    @Test
    public void  testFindTEntities_0args() throws ClassNotFoundException, NoSuchMethodException, InstantiationException, IllegalAccessException {

        /* Example of instance usage. Even intellisense (NetBeans) works here!*/
        try {
            List<T> lista = (List<T>) facadeManager.findAllEntities();
            lista.stream().forEach((ct) -> {
                System.out.println("Find all: " + stringReport());
            });
        } catch (Throwable ex) {
            System.err.println("Failed to access object." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }


    /**
     *
     * @return
     */
    public abstract String stringReport();

    protected abstract T createTestObject();
    protected abstract T editTestObject();
    protected abstract U getTextObjectIndex();
}
2
задан Zakaria Acharki 13 July 2018 в 11:44
поделиться

1 ответ

Рабочий скрипт .

Вам необходимо обновить атрибут max слайдера внутри вашей функции getCheck(), например:

document.getElementById('slider1').max = currentPrice;

//checkboxes and buttons

var basicPrice = 5000; // This is how we start
function getCheck() {
  var currentPrice = basicPrice; // every time
  currentPrice = parseFloat($(".event-hook-class.active").data("prezzo")) || basicPrice, // add any "active" boxes
    services = [],
    total = 0;

  $("input[id^=service]").each(function() {
    if (this.checked) {
      total += +this.value;
      services.push($("[for=" + this.id + "]").html()); // get the label text
    }
  });
  $("#prezzo").text((currentPrice + total).toFixed(2) + "€");
  $("#aaa").text((currentPrice + total).toFixed(2));
  $("#serv").html("services: " + services.join(", "));

  document.getElementById('slider1').max = (currentPrice + total).toFixed(2);
}


$(document).ready(function() {
  $("input[id^=service]").on("click", getCheck);
  $(".event-hook-class").on("click", function(e) {
    e.preventDefault();
    $(".event-hook-class").removeClass("active");
    $(this).addClass("active")
    $("#prezzo").html($(this).data('prezzo') + ' €');
    $("#mq").html($(this).data('mq'));
    getCheck(); // will add this and the checkboxes
  });
  getCheck(); // initialise on page load
});




//slider
$(document).ready(function() {


  var zzz = document.getElementById('aaa').innerText;
  document.getElementById('slider1').max = zzz;
});
const $mutuo = $("#mutuo"),
  $rata = $("#rata"),
  $anni = $("#anni"),
  $slider1 = $("#slider1"),
  $slider2 = $("#slider2"),
  $max = $("#aaa").html();


function showAmount1(newAmount) {
  document.getElementById('mutuo').innerHTML = newAmount;
  $mutuo.val($("#mutuo").innerHTML);
  update();
}


function showAmount2(newAmount) {

  document.getElementById('anni').innerHTML = newAmount;
  $anni.val($("#anni").innerHTML);
  update();
}





function update() {
  let interesseannuo = 1.60,
    C = $mutuo.html(),
    anni = $anni.html(),
    i = interesseannuo / 12 / 100,
    n = anni * 12,
    rata = C * i / (1 - Math.pow(1 + i, -n));

  $rata.html(rata.toFixed(2) + " €");
}
update();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type="button" class="event-hook-class simple-text piano" id="C.1_1" data-prezzo="5000" data-mq="94">
                              C.1_1 <br> piano 1<br> prezzo 5000 €</button><button type="button" class="event-hook-class simple-text piano" id="D.1_1" data-prezzo="10000" data-mq="94">
                              D.1_1 <br> piano 1<br> prezzo 10000 €</button><button type="button" class="event-hook-class simple-text piano" id="C_2.1" data-prezzo="15000" data-mq="94">
                              C_2.1 <br> piano 2<br> prezzo 15000 €</button><br><br><br><br>

<form id="services" name="services-form" data-name="services Form">
  <div class="checkbox-field w-checkbox"><input type="checkbox" value="22500" id="service_1" name="checkbox" data-name="Checkbox" class="checkbox 1 w-checkbox-input"><label for="service_1" class="simple-text white w-form-label">design pack</label> 22500 €</div>
  <div class="checkbox-field ew w-checkbox"><input type="checkbox" value="2000 " id="service_2" name="checkbox-2" data-name="service_2" class="checkbox 2 w-checkbox-input"><label for="service_2" class="simple-text white w-form-label">security</label> 2000 €</div>
  <div class="checkbox-field 2 w-checkbox"><input type="checkbox" value="5000" id="service_3" name="checkbox-2" data-name="service_3" class="checkbox 3 w-checkbox-input"><label for="service_3" class="simple-text white w-form-label">wellness pack</label> 5000 €</div>
  <div class="checkbox-field 4 w-checkbox"><input type="checkbox" value="1000" id="service_4" name="checkbox-2" data-name="service_4" class="checkbox 4 w-checkbox-input"><label for="service_4" class="simple-text white w-form-label">box auto</label> 1000 €</div>
</form>

<br><br><br>


<div class="paragraph" id="prezzo">
  200 €</div>


<br><br><br>

<div class="info-text-wrapper">
  <p class="info-paragraph black" id="aaa"></p>
  <p class="info-paragraph black">Totale mutuo (€)</p>
  <input type="range" min="0" max="" value="" step=".01" onchange="showAmount1(this.value)" id="slider1" />

  <div class="info-paragraph black" type="text" id="mutuo">0</div><br><br><br>

  <p class="info-paragraph black">Durata mutuo (anni)</p>
  <input type="range" min="10" max="30" value="10" step="5" onchange="showAmount2(this.value)" id="slider2">
  <div class="info-paragraph black" type="text" id="anni">10</div><br><br><br>

  <p class="info-paragraph black">La tua rata</p>
  <div class="paragraph" id="rata"></div><br>
</div>

1
ответ дан Stefano Zanetti 17 August 2018 в 13:03
поделиться
  • 1
    Это было так просто? и я боролся с этим для пары наших сейчас .. большое спасибо! Я просто просмотрел ваш ответ, потому что мне также нужно было обновить цену флажков;) – Stefano Zanetti 13 July 2018 в 12:21
  • 2
    Да, это случилось со всеми нами, Рад, что я могу помочь брату. – Zakaria Acharki 13 July 2018 в 12:22
Другие вопросы по тегам:

Похожие вопросы: