2013-06-21 56 views
1

我基本上想在頁面上顯示一個腳本,該腳本在頁面中找到兩個字段,名爲「lng」和「lat」,它們有一個值。在jquery中運行函數之前檢查字段的值

這意味着如果頁面上有值的字段,那麼它會嘗試並顯示地圖,但如果沒有,則不會。

這是我的代碼至今: http://jsfiddle.net/spadez/xJhmk/3/

function mapDisplay() { 

    var latval = $('input[id=lat]').val(); 
    var lngval = $('input[id=lng]').val(); 

    var mapOptions = { 
     zoom: 8, 
     center: new google.maps.LatLng(latval, lngval), 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     disableDefaultUI: true, 
     scrollwheel: false, 
     draggable: false 
    }; 
    var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions); 
} 


$(function() { 
    mapDisplay(); 
}); 

我不是在此刻jQuery的非常好,但是這是我試過,沒有工作:

if (latval !=NULL && lngval != NULL)){ 
...my code 
} 

多一些知識的人能幫助我理解爲什麼這種方法不起作用嗎?

回答

1

試試這個

if (!isNaN(latval) && !isNaN(lngval)) { 

所以基本上檢查,如果2路輸入是數字,且僅當真正將進入if條件。

而且

var latval = $('input[id=lat]').val(); 
var lngval = $('input[id=lng]').val(); 

可以安全地寫爲

var latval = $('#lat').val(), 
    lngval = $('#lng').val(); 

您可以掛鉤的change事件將顯示在地圖

代碼輸入

function mapDisplay() { 

    var latval = $('#lat').val(), 
     lngval = $('#lng').val(); 
     if (!isNaN(parseFloat(latval)) && !isNaN(parseFloat(lngval))) { 
     var mapOptions = { 
      zoom: 8, 
      center: new google.maps.LatLng(latval, lngval), 
      mapTypeId: google.maps.MapTypeId.ROADMAP, 
      disableDefaultUI: true, 
      scrollwheel: false, 
      draggable: false 
     }; 
     var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions); 
     $('#map_canvas').removeClass('hidden'); 
    } else { 
     $('#map_canvas').addClass('hidden'); 
    } 
} 


$(function() { 
    $('input').on('change', mapDisplay).trigger('change'); 
}); 

Check Fiddle

+0

isNaN返回true,它也返回true去空的通過, – FLF

+0

在這裏檢查http://jsfiddle.net/eghE9/ – FLF

+0

@FLF。 oopps ...錯過了..感謝您指出。我現在添加了一個額外的條件.. –

1

你可以這樣做:

var latval = $('#lat').val(); 
var lngval = $('#lng').val(); 

if ($.trim(latval) != '' && $.trim(lngval) != '') { 
    // You code 
  • 沒有必要做這個input[id=lat],你可以直接調用它,$('#lat')
  • 使用$.trim()從一開始就刪除空格並結束一個字符串。
1

你的代碼是正確的:你只需要添加一行在你爲了查看地圖CSS:

添加

display:block; in #map_canvas 

這樣的:

#map_canvas { 
    display:block; 
    height: 150px; 
    width: 300px; 
} 

此外,您可以通過使用jquery設置此顯示屬性來更改其顯示設置(取決於變量是否具有值)。

默認情況下,文本框返回字符串值。所以對於空的文本框,您可以檢查:

if(latval=='' && lngval==''){alert('blank');} 
else{your code;} 
1

從文本框返回的值是不是NULL,這只是一個空字符串,所以你應該檢查值是否爲空或不

if(latval !="" && lngval !=""){ 
Your code 
} 

如果你想具體的唯一號碼,嘗試添加

$.isNumeric() 

if($.isNumeric(latval) && $.isNumeric(lngval)){ 
    Your code 
    } 
1

當你正在檢查的概率緯度/經度,我還要檢查,如果他們是numeric

function checkValues() { 
    var valueOK = false; 
    if($.isNumeric($('#lat').val())) { 
     if($.isNumeric($('#lng').val())) valueOK = true; 
    } 

    return valueOK; 
} 

$(function() { 
    if(checkValues) { 
     mapDisplay(); 
    } 
} 
1

您可以訪問的變量,比如

var lat = jQuery.trim($('#lat').val()); 
var lng = jQuery.trim($('#lng).val()); 

,並檢查字段已空時字符串爲空

if(lat == '' && lng == '') { 
    //do code 
} else { 
    //show the map 
    $("#mapId").show(); 
} 
相關問題