Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не работает jquery-скрипт (https://javascript.ru/forum/misc/71238-ne-rabotaet-jquery-skript.html)

maksqwerty 03.11.2017 17:15

Не работает jquery-скрипт
 
Всем привет, есть jquery скрипт:
$(document).ready(function() {
$('#data_v-gwert').change(function(){
   if($(this).val() <= "5000"){
$("#block1_5000").css ("display", "block");
$("#block2_5000").css ("display", "block");
$("#block3_5000").css ("display", "block");
$("#block4_5000").css ("display", "block");
}
else {
$("#block1_5000").css ("display", "none");
$("#block2_5000").css ("display", "none");
$("#block3_5000").css ("display", "none");
$("#block4_5000").css ("display", "none");
}
});
});


и элементы таблицы, которые я хочу скрыть/открыть
<td id="block1_5000" style="display: none;">тест</td>

и тд..
Это всё делается в зависимости от числа, которое ввёл в инпут с ид data_v-gwert

Но оно не работает:С
Ошибок валидатор не выдал.
ЧЯДНТ? :help:

Dilettante_Pro 03.11.2017 17:26

maksqwerty,
Попробуйте
$('#data_v-gwert').on('input', function(){
if($(this).val() <= 5000){

maksqwerty 03.11.2017 17:34

большое спасибо, сдвижение есть.
Но, как всегда есть одно "но",
элемент с ид data_v-gwert - поле, которое получает значение, после двух других полей
(т.е data_v-gwert = a*b, к примеру, где a и b - другие поля.)
так что, в этом случае ваш метот не работает :С
и второе "но"
у меня есть :
<td id="block1_5000" style="display: none;">тест</td>
<td id="block2_5000" style="display: none;">тест</td>
<td id="block3_5000" style="display: none;">тест</td>
<td id="block4_5000" style="display: none;">тест</td>

Т.е это целая строка таблицы, и когда я всё-же вписал вручную значение, и ваше решение заработало, таблица создалась как-то некоректно.
Могу ли я обернуть целую строку таблицы в какой-то див (но что-бы он поддерживал универсальные атрибуты и стили)? В форму я обернуть не смогу, наверное, так как эти значения потом буду в бд передавать

Dilettante_Pro 03.11.2017 17:45

maksqwerty,
Цитата:

Сообщение от maksqwerty
элемент с ид data_v-gwert - поле, которое получает значение, после двух других полей
(т.е data_v-gwert = a*b, к примеру, где a и b - другие поля.)

Тогда применяйте обработчик события к ним, а не к результату
Цитата:

Сообщение от maksqwerty
это целая строка таблицы

Так и показывайте/прячьте тогда целую строку, а не отдельные ячейки

maksqwerty 03.11.2017 17:50

Цитата:

Сообщение от Dilettante_Pro (Сообщение 469120)
maksqwerty,

Тогда применяйте обработчик события к ним, а не к результату
Так и показывайте/прячьте тогда целую строку, а не отдельные ячейки

так нельзя сделать, так как это применяется только к результату.
Всё-равно, какой value будет в a или в b, главное, что будет в результате

Я обернул эти ячейки в общий див, но не могу прописать этоу диву style = "display:block"
:cray:

Dilettante_Pro 03.11.2017 18:10

Либо так
A<input id="data_a-gwert" type = "text" value = "1"> 
B<input id="data_b-gwert" type = "text" value = "1"> 
<input id="data_v-gwert" type = "text" disabled> 
<table>
<tr id="block_5000" >
<td id="block1_5000" >тест</td>
<td id="block2_5000" >тест</td>
<td id="block3_5000" >тест</td>
<td id="block4_5000" >тест</td>
</tr>
<table>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$('#data_a-gwert, #data_b-gwert').on("input",function(){
   $('#data_v-gwert').val($('#data_a-gwert').val() * $('#data_b-gwert').val()) ;
   if($('#data_v-gwert').val() <= 5000){
$("#block_5000").css ("display", "block");
}
else {
$("#block_5000").css ("display", "none");
}
});
</script>

либо так
A<input id="data_a-gwert" type = "text" value = "1"> 
B<input id="data_b-gwert" type = "text" value = "1"> 
<input id="data_v-gwert" type = "text" disabled> 
<table>
<tr id="block_5000" >
<td id="block1_5000" >тест</td>
<td id="block2_5000" >тест</td>
<td id="block3_5000" >тест</td>
<td id="block4_5000" >тест</td>
</tr>
<table>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$('#data_a-gwert, #data_b-gwert').on("input",function(){
   $('#data_v-gwert').val($('#data_a-gwert').val() * $('#data_b-gwert').val()) ;
   if($('#data_v-gwert').val() <= 5000){
$("#block1_5000").css ("display", "table-cell");
$("#block2_5000").css ("display", "table-cell");
$("#block3_5000").css ("display", "table-cell");
$("#block4_5000").css ("display", "table-cell");
}
else {
$("#block1_5000").css ("display", "none");
$("#block2_5000").css ("display", "none");
$("#block3_5000").css ("display", "none");
$("#block4_5000").css ("display", "none");
}
});
</script>

maksqwerty 03.11.2017 18:23

Dilettante_Pro,
большое спасибо за ваш ответ, но эти a и b - это был только пример.
На самом деле это ячейки с другой динамической таблицы, которая написана на обычном js.

А может можно сделать скрытый селект, который менял бы свои значения в зависимости от data_v-gwert
и уже отталкиваться от этого селекта?
Или это тоже идея так себе? : /

Dilettante_Pro 03.11.2017 18:27

maksqwerty,
А чем вам не нравится data_v-gwert ?
Вы же ее когда-то заполняете? вот при этом и проверяйте ее значение и показывайте/скрывайте ячейки.
Цитата:

Сообщение от maksqwerty
написана на обычном js.

Ну и что? JS и jQuery можно совмещать - хотя это не очень "красиво", лучше свести все к одной технологии

maksqwerty 03.11.2017 18:34

Dilettante_Pro,
да она то мне всем нравится:)
Приведу часть кода с той таблицы, которая отвечает за заполнение этого поля:
function wertzahl()
{
    gwert = 0;
    wertsum = 0;
    for ( var wertindex =1; wertindex<40; wertindex++){
        var preis100sum = parseFloat(document.getElementById('preispro100'+wertindex).value);
        var mengesum = parseInt(document.getElementById('menge'+wertindex).value);
        var wertsum = preis100sum/100 * mengesum;

        //Wert
        document.getElementById('wert'+wertindex).value = wertsum;

        //Gwert
        var gwert; 
        gwert += wertsum;
          if (isNaN(gwert)==true) gwert = 0;
        document.getElementById('data_v-gwert').value = gwert;
    }
}

и вот как выглядит сам мой data_v-gwert:
<input type="number" step="0.01" id="data_v-gwert"  onfocus="wertzahl()"  class="form-control">

Просто я в jquery (как и в js) новичок, и не знаю, как верно использовать события

Dilettante_Pro 03.11.2017 18:35

maksqwerty,
Увы, уже убегаю - может, кто еще поможет


Часовой пояс GMT +3, время: 03:35.