如果输入值是<在jQuery中0.2

时间:2017-09-07 13:28:36

标签: jquery html

我只有在.focusout()现在无条件解雇时才会发起myInput.val() < 0.2。我不知道我做错了什么。

jQuery('input[type=text]').on('input', function () {
    var myInput = jQuery(this);
    jQuery(this).val(jQuery(this).val().replace(/,/g, '.'));
    if (parseFloat(myInput.val()) < 0.2  ) {
        jQuery('.alert').hide();
        jQuery(this).focusout(function() {
            jQuery(this).val('0,2');
        })
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<input type="text">
<span class="alert">alert</span>

2 个答案:

答案 0 :(得分:3)

您并非有条件地执行 focusout事件,您有条件地创建它。一旦创建,它将始终执行。

正常创建事件,但将条件放在事件本身中。该事件将始终执行,但其中的逻辑将根据条件而改变。像这样:

jQuery('input[type=text]').on('input', function () {
    jQuery(this).val(jQuery(this).val().replace(/,/g, '.'));
    if (parseFloat(jQuery(this).val()) < 0.2  ) {
        jQuery('.alert').hide();
    }
});

jQuery('input[type=text]').focusout(function() {
    if (parseFloat(jQuery(this).val()) < 0.2  ) {
        jQuery(this).val('0,2');
    }
});

注意:我主要是猜测这里的预期功能。但这个想法本身很简单。保持事件分离,假设事件将始终触发,并根据您的逻辑有条件地响应这些事件。不要试图自己有条不紊地发射事件。

答案 1 :(得分:0)

myInput.val()) < 0.2至少履行一次时会发生这种情况。 focusout事件保留在内存中,您无条件地设置该值。以下代码将修复您的代码:

jQuery('input[type=text]').on('input', function () {
    var myInput = jQuery(this);
    jQuery(this).val(jQuery(this).val().replace(/,/g, '.'));
    if (parseFloat(myInput.val()) < 0.2  ) {
        jQuery('.alert').hide();
        jQuery(this).focusout(function() {
            parseFloat(jQuery(this).val()) < 0.2 && jQuery(this).val('0.2');
        })
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<input type="text">
<span class="alert">alert</span>