windows onload - 从表单错误中不引人注意地解析值

时间:2013-12-13 16:20:17

标签: javascript

我目前在我的html代码中有一个onclick函数,它是一个自动完成功能。我的目标是将所有javascript从html中移到一个单独的文件中,但是,在这种情况下传输不起作用。

这有效:它正确调用函数

<form>  
<input class="input" id="location" onclick="showHint(this.value)" value=""/>
    <input class="input_submit" id="fj" type="submit" value="Find!"/>
</form>

这不起作用(虽然它会显示一个警告框 - 所以它正在连接)

<form>  
<input class="input" id="location" value=""/>
    <input class="input_submit" id="fj" type="submit" value="Find!"/>
</form>

window.onload = function(){
    document.getElementById("location").onclick = showHint(this.value);
}

我非常有信心(this.value)需要以另一种方式完成。

非常感谢任何帮助或指导。

结果

所以代码现在适用于此:

document.getElementById("location").onclick = function(){ showHint(this.value);};

当我最初向我推荐上述内容时,我的JS文件中某处的代码看起来不正确,导致无法正常触发。

2 个答案:

答案 0 :(得分:1)

不确定window是否具有onload属性。即使如此,当JavaScript解释器将函数分配给它时,事件处理程序很久以前就被解雇了,因此你的代码永远不会被运行。

尝试将onclick初始化放在<script>最后的<body>标记内。

<!-- ... -->
    <script>    
        var locationElement = document.getElementById("location");
        locationElement.onclick = function() {
            showHint(locationElement.value);
        };
    </script>
</body>

此外,您可以使用 jQuery 并将其设置为

$(document).ready(function() {    
    $("#location").click(function() {
        showHint($(this).val());
    });
}

这个更干净一点。作为交换,你需要第三方lib。

答案 1 :(得分:1)

根据您提供的代码并保留HTML相同,这可以为您提供所需的结果:

window.onload = function(){
    var showHint = function(val){
        alert(val);
    };

    document.getElementById("location").onclick = function(){
        showHint(this.value);
    }; 
};

这是一个显示实际代码的小提琴:http://jsfiddle.net/zsXw5/

希望它有所帮助!