1

これらの3つのフィールドのいずれかが入力されると関数がトリガーされるように、3つのフィールドのキーアップイベントを作成しようとしています。これは、アプリケーションが公式にサポートしている唯一のブラウザーであるため、IE で作業しています。これは、使用する html の重要な部分です。

<input title="Buy Price (Cannot be used in conjunction with Percentage Price)" name="BuyRate" size="3" id="BuyRate" type="text" />
<input title="Sell Price (Cannot be used in conjunction with Percentage Price)" name="SellRate" size="3" id="SellRate" type="text" />
<input title="Percentage Price (Cannot be used in conjunction with Buy/Sell Price)" name="PercentagePrice" id="PercentagePrice" type="text" id="PercentagePrice" maxlength="9" size="5" />

そして、これが私が現在持っているJQueryです。

$("#BuyRate").keyup(function() {
alert("1");
    checkBuySellPercentage();
});

$("#SellRate").keyup(function() {
alert("2");
    checkBuySellPercentage();
});

$("#PercentagePrice").keyup(function() {
alert("3");
    checkBuySellPercentage();
});

function checkBuySellPercentage()
{
alert("4");
    var buyrate = $.trim($("#BuyRate").val());
    var sellrate = $.trim($("#SellRate").val());
    var percentageprice = $.trim($("#PercentagePrice").val());
    if (buyrate !== "" || sellrate !== "")
    {
        $("#PercentagePrice").attr("disabled", "disabled");
    }
    else if (percentageprice !== "")
    {
        $("#BuyRate").attr("disabled", "disabled");
        $("#SellRate").attr("disabled", "disabled");
    }
    else
    {
        $("#BuyRate").removeAttr("disabled");
        $("#SellRate").removeAttr("disabled");
        $("#PercentagePrice").removeAttr("disabled");
    }
}

これが正しく機能しないのはなぜですか?

4

1 に答える 1

2

IE 8 と Google Chrome で動作しているようです。それらのスクリプト行をいつ実行しますか? イベントリスナーを追加しようとしているときに、DOM が準備完了状態にない可能性があります。そのため、そのようなイベント バインディングをjquery の document.readyブロックに配置すると、常に役立ちます。

document.ready ブロックの例:

$(document).ready(function(){
    // keyup event bindings should be in this block
});
于 2012-11-13T12:04:33.763 に答える