0

我试图在 Google 地图信息窗口内的 TextBox 上只允许有效字符。'keypress' 事件不会触发。请帮我解决这个问题。

google.maps.event.addListener(drawingManager, 'polygoncomplete', function(polygon) {

        var polylength=polygon.getPath().getArray().length;
        var lastarray=polygon.getPath().getAt(polylength-1);

            vertex=polygon.getPath().getArray();
        var contentString="<form id='myform'>Name:<input name='cname' id='cname' type='text' size='50'></input><br>Address<input name='addr' id='addr' type='text' size='50'></input><br><input type='button' value='submit' onclick='save();'></input></form>";
        infowindow = new google.maps.InfoWindow({
            content: contentString,
            });
        infowindow.setPosition(lastarray);
        infowindow.open(map);
    }); 

$('input').bind('keypress', function(event){
                 alert("pressed");
                var regex = new RegExp("^[a-zA-Z0-9 ]+$");
                var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
                if (!regex.test(key)) {
                   event.preventDefault();
                   return false;
                }
        });
4

1 回答 1

2

当您bindinput字段input进行事件侦听器时,尚未创建字段。您需要在 上添加domready事件侦听器infowindow,然后侦听器:bindkeypress

infowindow = new google.maps.InfoWindow({
     content: contentString,
});
google.maps.event.addListener(infowindow , 'domready', function(){
    $('#myform input').bind('keypress', function(event){
             alert("pressed");
            var regex = new RegExp("^[a-zA-Z0-9 ]+$");
            var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
            if (!regex.test(key)) {
               event.preventDefault();
               return false;
            }
    });
});
于 2012-04-07T08:44:50.133 回答