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

选择元素的value属性在获取时返回一个字符串。当您比较它们时,它们将按字母顺序进行比较,即"5000000" > "45000000". 在使用之前将它们转换为数字,parseInt()或者通过隐式转换使用+.

if (+$startRange > +$endRange)

顺便说一句,JavaScript 变量不需要以$.

于 2012-08-01T12:38:40.970 回答