function getAgeRange(from, to) {
function constructRange(from, to) {
if (!from || from < 1) {
return null
}
if (to === '' || from === to) {
return [from, from]
}
if (from > to) {
return null
}
return [from, to]
}
var range = constructRange(from, to)
if (range) {
return range.map(function(x) {
return parseInt(x)
})
}
return range
}
jQuery(document).ready(function() {
jQuery('#btnAdvanceSearch').click(function() {
var from = jQuery('#txtAGE').val()
var to = jQuery('#txtTO').val()
\t
var range = getAgeRange(from, to)
if (!range) {
alert('Invalid Age range!')
return false
}
if (range[0] == range[1]) {
alert('Search exact age: ' + range[0])
return true
}
alert('Search in age range: ' + range[0] + ' - ' + range[1])
return true
})
})
// quick tests
assert('Empty fields gives null', getAgeRange('', ''), null)
assert('Age can\'t be 0', getAgeRange('0', ''), null)
assert('Age can\'t be negative', getAgeRange('-1', ''), null)
assert('If only age given, return [age, age]', getAgeRange('1', ''), [1, 1])
assert('If age equals to, return [age, age]', getAgeRange('1', '1'), [1, 1])
assert('If to is greater than age, return [age, to]', getAgeRange('1', '2'), [1, 2])
assert('If age is greater than to, return null', getAgeRange('2', '1'), null)
function assert(message, x, y) {
function equals(x, y) {
if (y== null) {
return x === y
}
return x.reduce(function(acc, value, key) {
return value == y[key]
}, false)
}
if (!equals(x, y)) {
console.error('Failed: ' + message + '. Expected: ' + x + ' but got ' + y)
}
else {
console.info('Success: ' + message)
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="number" id="txtAGE" />
<input type="number" id="txtTO" />
<button id="btnAdvanceSearch">Search</button>
'age_from'と' age_to'が有効な値を持っていることをあなたは確かにいますか? 'if'にブレークポイントを置くと、デバッガは値を何と言いますか? –
あなたのコードをトリガーしないと言います。 '$(document).ready(function(){...})の中にコードを入れてみてください。 ' – Andrejs
Webformsは、それと全く同じ範囲検証ツールを持っています。 – VDWWD