Без клика на поле, не обновляются данне

vave

Полезный
Регистрация
22 Июн 2007
Сообщения
466
Реакции
16
Дорогие друзья, подскажите, как исправить, что бы в поле id="skb-res", обновлялись данные, без клика на поле id="txtAmt"?

К сожалению разработчиком этот момент не был продуман...

HTML:
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.2/jquery.min.js'></script>
<input id="inputCm">
<input id="txtAmt">
<input style="display:none;" id="txtPer" value="10">
<textarea id="skb-res" type="text" value=""></textarea> 
<script>
document.getElementById('inputCm').addEventListener('input', function(e){
    var cm = e.target.value;
    document.getElementById('txtAmt').value = (cm/10000).toFixed(10);
});
$(function() {
$("#txtAmt").blur(function() {
var amt = $("#txtAmt").val();
var per = $("#txtPer").val();
var res = (amt/100) * per;
$("#skb-res").html(res);
});
});
</script>
 
Последнее редактирование:
Замените blur на ready и функция будет выполняться после загрузки страницы.
 
Последнее редактирование:
Замените blur на ready и функция будет выполняться после загрузки страницы.
Спасибо за ответ, но к сожалению при замене blur на ready функция перестает работать, в поле появляется нолик, и его значение не меняется
 
Спасибо за ответ, но к сожалению при замене blur на ready функция перестает работать, в поле появляется нолик, и его значение не меняется
Все верно, у него же нету стартового значения для txtAmt, задайте и все будет работать как швейцарские часы.
 
Все верно, у него же нету стартового значения для txtAmt, задайте и все будет работать как швейцарские часы.
Теперь он постоянно на одном значении висит, не реагирует на ввод в поле <input type="text"....
А значение должно автоматом меняться.
 
Теперь он постоянно на одном значении висит, не реагирует на ввод в поле <input type="text"....
А значение должно автоматом меняться.
В таком случаи Вам нужно создать две функции, первая будет изменять при введении нового значения, а вторая будет выполнять при старте.
HTML:
$(function() {
    $(document).ready(function() {
        var amt = $("#txtAmt").val();
        var per = $("#txtPer").val();
        var res = (amt/100) * per;
        $(this).find("input[id=\"txtAmt\"]").focus();
        $("#skb-res").html(res);
    });
    $("#txtAmt").blur(function() {
        var amt = $("#txtAmt").val();
        var per = $("#txtPer").val();
        var res = (amt/100) * per;
        $(this).find("input[id=\"txtAmt\"]").focus();
        $("#skb-res").html(res);
    });
});
 
Последнее редактирование:
В таком случаи Вам нужно создать две функции, первая будет изменять при введении нового значения, а вторая будет выполнять при старте.
HTML:
$(function() {
    $(document).ready(function() {
        var amt = $("#txtAmt").val();
        var per = $("#txtPer").val();
        var res = (amt/100) * per;
        $(this).find("input[id=\"txtAmt\"]").focus();
        $("#skb-res").html(res);
    });
    $("#txtAmt").blur(function() {
        var amt = $("#txtAmt").val();
        var per = $("#txtPer").val();
        var res = (amt/100) * per;
        $(this).find("input[id=\"txtAmt\"]").focus();
        $("#skb-res").html(res);
    });
});
Ну при старте подсчет не нужен, думаю проблемка более простая чем вы подумали)
Моя проблема в том, что поле id="skb-res", отображает нововеденное значение, только после того, как курсором мышки, тынку на поле id="txtAmt".


Вот можете тут пример глянуть
Для просмотра ссылки Войди или Зарегистрируйся
Результат не меняется, при изменении значения в первом поле, только если кликнуть по второму полю, или ввести там новое значение.
 
Надо функцию из blur вынести отдельно, и эту функцию повесить на keyup #txtAmt, keyup #txtPer
 
You could add a class to both of your inputs and execute the function on keyup event. Not tested, but something like this should work.
HTML:
<input class="myinputselector" type="text" name="txtPer" id="txtPer" value="" >
<input class="myinputselector" type="text" name="txtAmt" id="txtAmt" value="" >

Код:
$(".myinputselector").keyup(function() {
    let amt = $("#txtAmt").val();
    let per = $("#txtPer").val();
    if(amt !== "" && per !== "" && !isNaN(amt) && !isNaN(per)){
      let res = (amt/100) * per;
      $("#skb-res").html(res);    
    } else {
      $("#skb-res").empty();
    }
  });
 
Назад
Сверху