1

我正在尝试读取通过自动完成获得的输入并将其显示为警报。访问后,我得到未定义为警报,而不是通过 labelinput 访问的值。

ex.js文件如下

goog.require('goog.dom');
goog.require('goog.ui.LabelInput');
goog.require('goog.ui.ac');
goog.require('goog.events.EventType');
function autoComplete() {
    var jobj = [{"cityname":"Bangalore","cityid":"1"},
    {"cityname":"Bellary","cityid":"2"},
    {"cityname":"Belgaum","cityid":"3"},
    {"cityname":"Bidar","cityid":"4"},
    {"cityname":"Mumbai","cityid":"5"},
    {"cityname":"Munnar","cityid":"6"},
    {"cityname":"Delhi","cityid":"7"},
    {"cityname":"Diu/Daman","cityid":"8"}];
    var li1 = new goog.ui.LabelInput("Enter City Name");
        li1.render(goog.dom.getElement('d1'));
    var array1 = new Array();
        for (var i=0;i<jobj.length; i++)
        {
        array1[i] = jobj[i].cityname;
        }
    var ac2 = goog.ui.ac.createSimpleAutoComplete(
        array1, goog.dom.getElement('d1'), false);
    goog.events.listen(ac2,
        goog.ui.ac.AutoComplete.EventType.UPDATE,
        function() { var val2 = (goog.dom.getElement('d1').value);
        alert(val2);
        });
}

ex.html文件如下

<html>
  <head>
    <script src="../closure-library/closure/goog/base.js"></script> <!--My Closure Library Location -->
    <script src="ex.js"></script>
  </head>
  <body onload="autoComplete();">
    <style>
        .ac-renderer {
        position: absolute;
        width: 300px;
        background-color: #fff;
        border: 1px solid;
        }
    </style>
        <div id="d1">City &nbsp </div><br><br>
    </body>
</html>
4

1 回答 1

3

"goog.dom.getElement('d1')" 将返回一个没有值的 div 元素。当您调用时,LabelInput 在该元素内呈现一个控件

li1.render(goog.dom.getElement('d1')); 

您应该使用 LabelInput 类本身的 getValue 方法

li1.getValue()

或者,如果您想访问在 LabelInput 呈现方法期间创建的 Input 元素,请调用

li1.getElement().value

来源:http ://docs.closure-library.googlecode.com/git/class_goog_ui_LabelInput.html

于 2013-08-14T13:16:41.503 回答