Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 无法使内联表单标签在InfoWindow中工作_Jquery_Css_Forms_Google Maps_Label - Fatal编程技术网

Jquery 无法使内联表单标签在InfoWindow中工作

Jquery 无法使内联表单标签在InfoWindow中工作,jquery,css,forms,google-maps,label,Jquery,Css,Forms,Google Maps,Label,我快疯了。我尝试了在网络上找到的所有可能的解决方案(似乎对每个人都有效),但似乎都不起作用,因为我想在谷歌地图信息窗口中找到它 InfoWindow内容是通过Ajax加载的,所以我真的不确定Jquery应该放在哪里——尽管我已经尝试了(我想!)所有可能的组合 尝试过的解决方案: ,以及其他 唯一有效的是HTML5的占位符,但我对此不满意,因为它在IE10以下的版本中效果不太好 以下是所需效果的快照: 我想在下面的信息窗口中工作。参见“Nome opcional”一文?我希望它是一个内嵌模糊标签

我快疯了。我尝试了在网络上找到的所有可能的解决方案(似乎对每个人都有效),但似乎都不起作用,因为我想在谷歌地图信息窗口中找到它

InfoWindow内容是通过Ajax加载的,所以我真的不确定Jquery应该放在哪里——尽管我已经尝试了(我想!)所有可能的组合

尝试过的解决方案: ,以及其他

唯一有效的是HTML5的
占位符
,但我对此不满意,因为它在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');  
       }
     });
 });
}