Jquery 无法使内联表单标签在InfoWindow中工作
我快疯了。我尝试了在网络上找到的所有可能的解决方案(似乎对每个人都有效),但似乎都不起作用,因为我想在谷歌地图信息窗口中找到它 InfoWindow内容是通过Ajax加载的,所以我真的不确定Jquery应该放在哪里——尽管我已经尝试了(我想!)所有可能的组合 尝试过的解决方案: ,以及其他 唯一有效的是HTML5的Jquery 无法使内联表单标签在InfoWindow中工作,jquery,css,forms,google-maps,label,Jquery,Css,Forms,Google Maps,Label,我快疯了。我尝试了在网络上找到的所有可能的解决方案(似乎对每个人都有效),但似乎都不起作用,因为我想在谷歌地图信息窗口中找到它 InfoWindow内容是通过Ajax加载的,所以我真的不确定Jquery应该放在哪里——尽管我已经尝试了(我想!)所有可能的组合 尝试过的解决方案: ,以及其他 唯一有效的是HTML5的占位符,但我对此不满意,因为它在IE10以下的版本中效果不太好 以下是所需效果的快照: 我想在下面的信息窗口中工作。参见“Nome opcional”一文?我希望它是一个内嵌模糊标签
占位符
,但我对此不满意,因为它在IE10以下的版本中效果不太好
以下是所需效果的快照:
我想在下面的信息窗口中工作。参见“Nome opcional”一文?我希望它是一个内嵌模糊标签,如上图所示
这是用于加载InfoWindow内容的代码:
function load_newinfowindow_content(lat, long, infowindow){
$.ajax({
url: site_root +'map/newmarker_infowindow/'+lat+'/'+long,
success: function(data){
infowindow.setContent(data);
}
});
}
infoWindow是基本的HTML表单。CSS对所有页面都是全局的,包括InfoWindow(它工作得很好)
成功了!
通过尝试将Javascript代码放在不同的地方,正如注释中所建议的那样,甚至尝试使用InfoWindow的domready
事件,我找到了它真正起作用的唯一地方
在我的AJAX调用中加载内容,结果如下:
function load_newinfowindow_content(lat, long, infowindow){
$.ajax({
url: site_root +'map/newmarker_infowindow/'+lat+'/'+long,
success: function(data){
infowindow.setContent(data);
processInLineLabels();
}
});
}
还有$(document).ready(function()
,它存在于所有解决方案中,我将其转换为一个函数,如下所示(但它也适用于其他解决方案)
对于每个解决方案,代码都有点大,这就是我添加链接的原因。但我将添加其中一个作为示例和所需效果的快照。呈现信息窗口的代码是什么样子的?Jquery可能希望它在执行之前在DOM中,或者在“domready”中运行Jquery代码事件。我添加了代码以加载信息窗口及其HTML内容。DOM ready的意思是$(文档)。ready
对吗?正如我在问题详细信息中添加的,我尝试将其放置在可能的位置。我只得到“部分”结果,但从来没有在文本字段中添加标签。您使用DOM ready编写的,您的意思是$(document).ready
。不。上的domready事件。它工作了!虽然没有建议的解决方案那么漂亮,但它工作了。domready不工作,因为它是在信息窗口打开时被调用的,我在加载ajax时运行了一个gif。
function load_newinfowindow_content(lat, long, infowindow){
$.ajax({
url: site_root +'map/newmarker_infowindow/'+lat+'/'+long,
success: function(data){
infowindow.setContent(data);
processInLineLabels();
}
});
}
function processInLineLabels() {
$('input[title]').each(function() {
if($(this).val() === '') {
$(this).val($(this).attr('title'));
}
$(this).focus(function() {
if($(this).val() == $(this).attr('title')) {
$(this).val('').addClass('focused');
}
});
$(this).blur(function() {
if($(this).val() === '') {
$(this).val($(this).attr('title')).removeClass('focused');
}
});
});
}