初始化后更改输入字段的占位符文本

Change the placeholder text of an input field after initializing

我正在使用在地图上生成的输入字段。我想将输入字段的占位符文本从 "Search" 更改为 "Search for Location"。

输入字段没有 class 或 ID,但其父项有。我尝试在使用下面的 jQuery 初始化后进行更改,但无济于事。

$('.leaflet-control-mapbox-geocoder-form input').attr("placeholder","Search for Location");

下面是一个 fiddle,输入字段可见。我很高兴继续使用 jQuery 或通过纯 JS。

http://jsfiddle.net/teraw600/

它在您的示例中不起作用,因为 jQuery 未包含在内。

如果您不想使用 jQuery,您可以使用以下内容:

Updated Example

document.querySelector('.leaflet-control-mapbox-geocoder-form input').placeholder = "Search for Location";

您还可以为 ready 事件添加事件侦听器,然后在回调中更改 placeholder 属性。同样,不需要 jQuery:

Example Here

L.mapbox.accessToken = 'pk.eyJ1Ijoic3BheWNlIiwiYSI6IlNIMnRfZ2MifQ.SreIfdJljzEj2M033UubsA';
L.mapbox.map('map', 'examples.h186knp8')
    .addControl(L.mapbox.geocoderControl(
        'mapbox.places', {
            keepOpen: true
        }
    ))
    .addEventListener('ready', function () {
        document.querySelector('.leaflet-control-mapbox-geocoder-form input').placeholder = "Search for Location";
    }
);

更好的方法是向地理编码器对象添加键值对(占位符:您的文本)所以当你初始化它时:

  var geocoder = new MapboxGeocoder({
    accessToken: mapboxgl.accessToken,
    mapboxgl: mapboxgl,
    placeholder: 'Search for Location'
  });