var LatLngSwitch = function (parent) { this.Parent = parent; this.Startup = function () { $('#first-copy-btn').on('click', this.OnFirstCopyClick.bind(this)); $('#second-copy-btn').on('click', this.OnSecondCopyClick.bind(this)); $('#first-switch-btn').on('click', this.onFirstSwitchClick.bind(this)); $('#second-switch-btn').on('click', this.onSecondSwitchClick.bind(this)); $('#close-lat-lng-switch-dialog').on('click', this.HideDialog.bind(this)); $('#dialog-lat-lng-switch-cancel').on('click', this.HideDialog.bind(this)); $('#first-degree').on('change', this.onFirstDegreeChange.bind(this)); $('#first-minute').on('change', this.onFirstMinuteChange.bind(this)); $('#first-second').on('change', this.onFirstSecondChange.bind(this)); $('#second-decimal').on('change', this.onSencondDecimalChange.bind(this)); }; this.onFirstDegreeChange = function (event) { this.checkInput($(event.target), 180); }; this.onFirstMinuteChange = function (event) { this.checkInput($(event.target), 60); }; this.onFirstSecondChange = function (event) { this.checkInput($(event.target), 60); }; this.onSencondDecimalChange = function (event) { this.checkInput($(event.target), 180); } this.checkInput = function (element, max) { if (element.val().trim() === '') { id.addClass('error'); element.next().show(); return; } else if (Number(element.val()) > max || Number(element.val()) < 0) { $(element).addClass('error'); element.next().show(); return; } else { $(element).removeClass('error'); element.next().hide(); } }; this.ShowDialog = function () { $('#dialog-lat-lng-switch').show(); $('#first-degree').val(''); $('#first-minute').val(''); $('#first-second').val(''); $('#first-decimal').val(''); $('#second-degree').val(''); $('#second-minute').val(''); $('#second-second').val(''); $('#second-decimal').val(''); $('#hide-text').text(''); }; this.getLatLng = function (value) { value = value.toString() let index = value.indexOf('.') if (index !== -1) { value = value.substring(0, 6 + index + 1) } else { value = value.substring(0) } return parseFloat(value).toFixed(6) } this.onFirstSwitchClick = function (event) { var degree = $('#first-degree').val(); var minute = $('#first-minute').val(); var second = $('#first-second').val(); $('#first-degree').removeClass('error'); $('#first-minute').removeClass('error'); $('#first-second').removeClass('error'); if (degree.trim() === '' || Number(degree) > 180 || Number(degree) < 0) { this.showError($('#first-degree')); } else if (minute.trim() === '' || Number(minute) > 60 || Number(minute) < 0) { this.showError($('#first-minute')); } else if (second.trim() === '' || Number(second) > 60 || Number(second) < 0) { this.showError($('#first-second')); } else { this.hideError($('#first-degree')); this.hideError($('#first-minute')); this.hideError($('#first-second')); var value = this.changeToDegree(degree, minute, second); $('#first-decimal').val(value); } }; this.onSecondSwitchClick = function () { var decimal = $('#second-decimal').val(); $('#second-decimal').removeClass('error'); console.log(decimal.length) if (decimal.trim() === '' || Number(decimal) > 180 || Number(decimal) < 0) { this.showError($('#second-decimal')); } else if (decimal.indexOf(".") < 0 || decimal.length < 5) { this.showError($('#second-decimal')); } else { this.hideError($('#second-decimal')); var value = this.changeToDecimal(decimal); var degree = $('#second-degree').val(value.degree); var minute = $('#second-minute').val(value.minute); var second = $('#second-second').val(value.second); $('#hide-text').val(degree.val() + "°" + minute.val() + "'" + second.val() + "\""); } }; this.showError = function (id) { id.next().show(); id.addClass('error'); alert('请输入正确的值。'); return }; this.hideError = function (id) { id.next().hide(); id.removeClass('error'); }; this.changeToDecimal = function (value) { var text = value.split("."); var degree = text[0]; var temp = "0." + text[1]; var temp = String(temp * 60); var str = temp.split("."); var minute = str[0]; temp = "0." + str[1]; temp = temp * 60; var second = temp; return { degree: degree, minute: minute, second: second } } this.changeToDegree = function (degree, minute, second) { var str = parseFloat(minute) + parseFloat(second / 60); var value = parseFloat(str / 60) + parseFloat(degree); return value; } this.HideDialog = function () { $('#dialog-lat-lng-switch').hide(); this.Parent.isSwitch = false; }; this.OnFirstCopyClick = function () { var selected = document.querySelector('#first-decimal'); selected.select(); document.execCommand('Copy'); }; this.OnSecondCopyClick = function () { var selected = document.querySelector('#hide-text'); selected.select(); document.execCommand('Copy'); }; }