на jQuery.событие change () не запускается в IE

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

Он отлично работает в 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>  

Обновление

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

5 ответов


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


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

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

jsfiddle


у меня была та же проблема: ниже fix работал для меня:

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

Я: $('#ltv-dialog').on('input', function() {


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

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

// CODE HERE

});

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

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

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

});

работает нормально, даже в первый раз

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

});