03.11.2017, 17:15
|
Аспирант
|
|
Регистрация: 03.11.2017
Сообщений: 58
|
|
Не работает 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
Но оно не работает:С
Ошибок валидатор не выдал.
ЧЯДНТ?
|
|
03.11.2017, 17:26
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
maksqwerty,
Попробуйте
$('#data_v-gwert').on('input', function(){
if($(this).val() <= 5000){
|
|
03.11.2017, 17:34
|
Аспирант
|
|
Регистрация: 03.11.2017
Сообщений: 58
|
|
большое спасибо, сдвижение есть.
Но, как всегда есть одно "но",
элемент с ид 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>
Т.е это целая строка таблицы, и когда я всё-же вписал вручную значение, и ваше решение заработало, таблица создалась как-то некоректно.
Могу ли я обернуть целую строку таблицы в какой-то див (но что-бы он поддерживал универсальные атрибуты и стили)? В форму я обернуть не смогу, наверное, так как эти значения потом буду в бд передавать
Последний раз редактировалось maksqwerty, 03.11.2017 в 17:46.
|
|
03.11.2017, 17:45
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
maksqwerty,
Сообщение от maksqwerty
|
элемент с ид data_v-gwert - поле, которое получает значение, после двух других полей
(т.е data_v-gwert = a*b, к примеру, где a и b - другие поля.)
|
Тогда применяйте обработчик события к ним, а не к результату
Сообщение от maksqwerty
|
это целая строка таблицы
|
Так и показывайте/прячьте тогда целую строку, а не отдельные ячейки
|
|
03.11.2017, 17:50
|
Аспирант
|
|
Регистрация: 03.11.2017
Сообщений: 58
|
|
Сообщение от Dilettante_Pro
|
maksqwerty,
Тогда применяйте обработчик события к ним, а не к результату
Так и показывайте/прячьте тогда целую строку, а не отдельные ячейки
|
так нельзя сделать, так как это применяется только к результату.
Всё-равно, какой value будет в a или в b, главное, что будет в результате
Я обернул эти ячейки в общий див, но не могу прописать этоу диву style = "display:block"
|
|
03.11.2017, 18:10
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Либо так
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>
Последний раз редактировалось Dilettante_Pro, 03.11.2017 в 18:15.
|
|
03.11.2017, 18:23
|
Аспирант
|
|
Регистрация: 03.11.2017
Сообщений: 58
|
|
Dilettante_Pro,
большое спасибо за ваш ответ, но эти a и b - это был только пример.
На самом деле это ячейки с другой динамической таблицы, которая написана на обычном js.
А может можно сделать скрытый селект, который менял бы свои значения в зависимости от data_v-gwert
и уже отталкиваться от этого селекта?
Или это тоже идея так себе? : /
|
|
03.11.2017, 18:27
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
maksqwerty,
А чем вам не нравится data_v-gwert ?
Вы же ее когда-то заполняете? вот при этом и проверяйте ее значение и показывайте/скрывайте ячейки.
Сообщение от maksqwerty
|
написана на обычном js.
|
Ну и что? JS и jQuery можно совмещать - хотя это не очень "красиво", лучше свести все к одной технологии
Последний раз редактировалось Dilettante_Pro, 03.11.2017 в 18:34.
|
|
03.11.2017, 18:34
|
Аспирант
|
|
Регистрация: 03.11.2017
Сообщений: 58
|
|
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) новичок, и не знаю, как верно использовать события
|
|
03.11.2017, 18:35
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
maksqwerty,
Увы, уже убегаю - может, кто еще поможет
|
|
|
|