1

私のフィドル

したがって、バスルームと(バスルーム)エンスイートの2つのフィールドがあります。

バスルームのフィールドがバスルームよりも大きくならないように制限しました。バスルームの値を下げると、バスルームの値が変更されるため、同じままです。

スクリプトは実際には単純でうまく機能しますが、バスルームの番号に 9 以上の値を設定すると、動作がおかしくなることに気付きました。たとえば、バスルームが 15 の場合、エンスイートは 1 から 15 にまっすぐジャンプします。バスルームを下げると、それ以上機能しなくなり、実際には 20 または 2000 = 2 のように動作し、残りの数字を無視して、最初の桁のみ。

html:

<label for="fbathrooms">Bathrooms</label><input id="fbathrooms" name="fbathrooms" type="number" min="0"/><br/>
<label for="fensuite" style="display:none">En Suite</label><input id="fensuite" name="fensuite" type="number" min="0" style="display:none;"/>​

コード:

function bathroomsTrigger(){
    if($('#fbathrooms').val() > 0){
        $('#fensuite').slideDown('fast');
        $('label[for="fensuite"]').slideDown('fast');
    } else {
        $('#fensuite').slideUp('fast');
        $('label[for="fensuite"]').slideUp('fast');
        $('#fensuite').val(0);
    }

    if($('#fensuite').val() > $('#fbathrooms').val()){
        $('#fensuite').val($('#fbathrooms').val());
    }
}

function ensuiteTrigger(){
    if($('#fensuite').val() > $('#fbathrooms').val()){
        $('#fensuite').val($('#fbathrooms').val());
    }
}

$('#fbathrooms').keyup(bathroomsTrigger);
$('#fbathrooms').change(bathroomsTrigger);

$('#fensuite').keyup(ensuiteTrigger);
$('#fensuite').change(ensuiteTrigger);​

私を夢中にさせて、すでに何時間も微調整してきました xD

助けていただければ幸いです。

(それはhtml5のバグでしょうか?)

4

1 に答える 1

5

問題はエンスイート トリガーにあります。より大きい比較のために文字列値を整数に解析していません。

変化する:

$('#fensuite').val() > $('#fbathrooms').val()

に:

parseInt($('#fensuite').val()) > parseInt($('#fbathrooms').val())
于 2012-11-14T15:27:23.353 に答える