#javascript #jquery
#javascript #jquery
Вопрос:
Мне интересно, чего мне здесь не хватает, это должно быть что-то очевидное.
Все, что я хочу, это чтобы маркер не появлялся, если еще не введены координаты.
var lat = jQuery('#latitude').val();
var lng = jQuery('#longitude').val();
alert(lat);
alert(lng);
if (lat.length != 0) {
alert('shouldnt be happening');
var latlng = new google.maps.LatLng(
parseFloat(lat),
parseFloat(lng)
);
var marker = new google.maps.Marker({
map: map,
position: latlng
});
}
Независимо от того, является поле ввода пустым или нет, if
условие продолжает передаваться.
Я также пытался if (lat != '') {}
Я настроил оповещения, чтобы доказать самому себе, что они пусты, и, как и предсказывалось, они предупреждают о пустом всплывающем окне, когда они пусты.
Спасибо.
Редактировать:
Чтобы упростить это, я ввел этот код, странная вещь сейчас заключается в том, что происходят все 3 предупреждения.
var lat = jQuery.trim(jQuery('#latitude').val());
var lng = jQuery.trim(jQuery('#longitude').val());
var zoom = 7;
alert(lat);
alert(lng);
if (lat.length == 0) {
lat = 53.412;
zoom = 6;
alert('THERE IS NO LATITUDE SET');
}
if (lng.length == 0) {
lng = -8.243;
zoom = 6;
alert('THERE IS NO LONGITUDE SET');
}
if (lat.length != 0) {
alert('now this shouldnt be happening');
}
Комментарии:
1. Не могли бы вы записать длину строки и код первого символа?
console.log(lat.charCodeAt(0));
Возможно, ваша строка состоит из невидимых символов2. «Пустое всплывающее окно» не доказывает пустоту. Доказательство:
alert(" tnr r t x01x02x03x04x05");
3. Возможно, у вас есть пробелы в поле ввода. Попробуйте проверить фактическую длину и / или использовать String.trim
4. Да, попробуйте это вместо этого: var lat = jQuery.trim(jQuery(‘#latitude’).val());
5. Прошу прощения, я идиот!
Ответ №1:
Я предлагаю использовать более защитный код:
var lat = jQuery('#latitude').val() || "";
var lng = jQuery('#longitude').val() || "";
Затем:
if (lat.length != "") {
...
}
val()
во многих случаях может возвращать значение null, используя || "";
вы убедитесь, что у вас есть определенное значение ожидаемого типа при инициализации var.
Кроме того, я думаю, что лучше заменить val() на:
attr("value")
Ответ №2:
Это методы сокращенного кодирования Javascript.
Когда вы получаете переменную,
var lat = jQuery('#latitude').val();
var lng = jQuery('#longitude').val();
Когда вам нужно проверить ее длину, вам нужно сначала проверить наличие этих условий,
null, неопределенный и пустой
Таким образом, вы можете проверить, как,
if( lat !== null amp;amp; lat !== undefined amp;amp; lat !== "" amp;amp; lat.length !== 0 ) {
//do something
}
Рекомендуется использовать «Строгое равенство» при проверке на равенство.
Сокращенный метод проверки вышеуказанных условий,
if( lat || "" ){
//Do Something
}
У меня есть коллекция методов сокращения JavaScript, на которые вы можете сослаться. Ссылка