繁体   English   中英

jQuery .change()事件没有在IE中触发

[英]jQuery .change() event not firing in 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>  

更新

更改事件似乎是触发,但仅当文本框从值更改为null时。

在定位文本输入元素时,您是否尝试过使用其他事件? 所以,而不是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

我遇到了同样的问题:以下修复对我有用:

而不是: $("#ltv-dialog input").change( function() {

我用过: $('#ltv-dialog').on('input', function() {

请尝试使用每个而不是更改 / 单击 ,这在IE和其他浏览器中首次工作正常

不是第一次工作

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

});

第一次工作正常

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

});

使用实时功能,它通常使它工作...

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

// CODE HERE

});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM