0

以下のコードでは、予算範囲の検証が機能していません。異なる時点で異なる結果をもたらします。

<table>
    <tr>
        <td>
            Budget Range
        </td>
        <td>
            <select id="start">
                <option value="">---Select---</option>
                <option value="0">0</option>
                <option value="1000000">10 Lakhs</option>
                <option value="2500000">25 Lakhs</option>
                <option value="5000000">50 Lakhs</option>
                <option value="7500000">75 Lakhs</option>
                <option value="10000000">1 Crore</option>
                <option value="12500000">1 Crore 25 Lakhs</option>
                <option value="15000000">1 Crore 50 Lakhs</option>
                <option value="17500000">1 Crore 75 Lakhs</option>
                <option value="20000000">2 Crore</option>
                <option value="25000000">2 Crore 50 Lakhs</option>
                <option value="30000000">3 Crore</option>
                <option value="35000000">3 Crore 50 Lakhs</option>
                <option value="40000000">4 Crore</option>
                <option value="45000000">4 Crore 50 Lakhs</option>
            </select>
            to
            <select id="end" onchange="selectRange()">
                <option value="0">---Select---</option>
                <option value="1000000">10 Lakhs</option>
                <option value="2500000">25 Lakhs</option>
                <option value="5000000">50 Lakhs</option>
                <option value="7500000">75 Lakhs</option>
                <option value="10000000">1 Crore</option>
                <option value="12500000">1 Crore 25 Lakhs</option>
                <option value="15000000">1 Crore 50 Lakhs</option>
                <option value="17500000">1 Crore 75 Lakhs</option>
                <option value="20000000">2 Crore</option>
                <option value="25000000">2 Crore 50 Lakhs</option>
                <option value="30000000">3 Crore</option>
                <option value="35000000">3 Crore 50 Lakhs</option>
                <option value="40000000">4 Crore</option>
                <option value="45000000">4 Crore 50 Lakhs</option>
            </select>
        </td>
    </tr>
</table>
<script>

    function selectRange() {
        $startRange = document.getElementById('start').value;
        $endRange = document.getElementById('end').value;

        alert($startRange);
        alert($endRange);

        alert($startRange > $endRange);

        if ($startRange > $endRange) {
            alert('The Budget End Should be Greater than Budget Start');
            $endRange = document.getElementById('end').value = 0;
            return false
        }
    }
</script>

上記のコードでは、予算範囲の検証が機能していません。異なる時点で異なる結果をもたらします。

4

2 に答える 2

2

値を取得する場合、これらは文字列として取得されるか、比較が文字列値に基づいているため、間違った結果が生成されます。それらを番号にキャストすると役立ちます。これらのコード行を置き換えるだけです

$startRange = document.getElementById('start').value;
$endRange = document.getElementById('end').value;

$startRange = parseInt(document.getElementById('start').value,10);
$endRange = parseInt(document.getElementById('end').value, 10);

また

$startRange = Number(document.getElementById('start').value);
$endRange = Number(document.getElementById('end').value);

parseInt関数を使用して、このjsfiddle http://jsfiddle.net/QWLEW/2/を確認してください

または、Number 関数を使用してhttp://jsfiddle.net/QWLEW/3/を確認してください

于 2012-08-01T12:38:21.767 に答える
0

select要素のvalueプロパティは、取得時に文字列を返します。それらを比較すると、アルファベット順に比較されます"5000000" > "45000000"parseInt()を使用するか、を使用して暗黙的+に変換することにより、前にそれらを数値に変換します。

if (+$startRange > +$endRange)

ところで、JavaScript変数はで始まる必要はありません$

于 2012-08-01T12:38:40.970 に答える