Событие jQuery .change () не запускается в IE - PullRequest
9 голосов
/ 29 марта 2012

У меня есть диалог, который выполняет вычисления, которые зависят от трех полей ввода.Когда любой из них изменяется, он проверяет, все ли они заполнены, и обрабатывает ли он, и выдает свой ответ.

Он работает абсолютно нормально в FF, Chrome, Opera и т. Д., Но в любой версии IE это простоперестает работатьОстальная часть моего jQuery работает нормально, но я не могу точно определить, где проблема здесь.Я думаю, что это может быть связано с событием .change () или связыванием нескольких событий, но я действительно не знаю.

Вот код обидчика:

var loan = $("#ltv-loan-amount");
var mortgage = $("#ltv-mortgage");
var property = $("#ltv-property");

$("#ltv-dialog input").change( function() {
    if(loan.val() && mortgage.val() && property.val())
    {
        var ltv = parseInt( ( ( parseInt(loan.val()) + parseInt(mortgage.val()) ) / parseInt(property.val()) )* 1000 );
        ltv /= 10;
        if(ltv > 0 && ltv < 85)
        {
            $("#ltv-result").html("<span id=\"ltv-form-result\">" + ltv + "%</span></p><p><a id=\"ltv-link\" href=\"#sidebar-head\">Congratulations, your LTV has passed. Please now proceed with your application opposite.</a>");
            $("#amount").val(loan.val());
            $("#mortgage_balance").val(mortgage.val());
            $("#prop_value").val(property.val());
            $("#ltv-link").click(function() {
                $( "#ltv-dialog" ).dialog( "close" );
            });
        }
        else if (ltv > 84)
        {
            $("#ltv-result").html("<span id=\"ltv-form-result\">" + ltv + "%</span></p><p>Unfortunately your LTV is greater than 85%. You may still qualify for a loan if you reduce the loan amount.");
        }
        else
        {
            $("#ltv-result").html("</p><p>Please check your input above as you currently have a negative ltv.");
        }
    }
});

и HTMLв вопросе:

<div id="ltv-dialog" title="Do You Qualify for a Loan?">
    <p>Please enter the fields below and your LTV will be calculated automatically.</p>
    <div id="ltv-form">
        <div class="ltv-row">
            <label for="ltv-loan-amount">Loan Amount:</label>
            <input type="text" name="ltv-loan-amount" id="ltv-loan-amount" class="p000" />
        </div>
        <div class="ltv-row">
            <label for="ltv-mortgage">Mortgage Value:</label>
            <input type="text" name="ltv-mortgage" id="ltv-mortgage" class="p000" />
        </div>
        <div class="ltv-row">
            <label for="ltv-property">Estimated Property Value:</label>
            <input type="text" name="ltv-property" id="ltv-property" class="p000" />
        </div>
    </div>
    <div class="ltv-row">
        <p>Loan to Value % (LTV): <span id="ltv-result"></span></p>
    </div>
</div>  

Обновление

Похоже, что событие изменения запускается, но только когда текстовое поле изменяется со значения на ноль.

Ответы [ 5 ]

9 голосов
/ 29 марта 2012

Когда вы нацеливаетесь на элементы ввода текста, пробовали ли вы использовать другое событие? Так что вместо change использовать, например, keyup? $("#ltv-dialog input").keyup( function() {. Это будет срабатывать после каждого нажатия клавиши.

3 голосов
/ 29 марта 2012

Использование jQuery .on() также может решить вашу проблему. Используйте это так:

jQuery("#ltv-dialog").on("change", "input", function(){
     alert("It works !");
     //your javascript/jQuery goes here
   }
);

jsfiddle

1 голос
/ 18 апреля 2017

У меня возникла та же проблема: у меня исправление ниже:

Вместо: $("#ltv-dialog input").change( function() {

Я использовал: $('#ltv-dialog').on('input', function() {

0 голосов
/ 31 мая 2016

Попробуйте использовать каждый вместо change / click , что отлично работает даже в первый раз в IE, а также в других браузерах

не работает в первый раз

$("#checkboxid").change(function () {

});

Хорошо работает даже в первый раз

$("#checkboxid").each(function () {

});
0 голосов
/ 29 марта 2012

Используйте функцию live, обычно она работает ...

$("#YOURTHING").live("change", function(){

// CODE HERE

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...