我无法使javascript .focus()函数正常工作。在这一点上,我真的不确定为什么它没有执行。它可能与onload有关吗?
这是我的代码:
var request_brochure = function()
{
var name = $("name").value;
var email = $("email").value;
var isValid = true;
if(name == "")
{
$("name").focus();
alert("Please fill in your name.");
$("name").focus();
isValid = false;
}
else if(email == "")
{
window.setTimeout(function(){$("email").focus();}, 100);
alert("Please fill in your email. ");
window.setTimeout(function(){$("email").focus();}, 100);
isValid = false;
}
if(isValid)
{
$("form_b").submit();
//$("brochure").innerHTML = "Request Submitted";
}
}
window.onload = function () {
$("name").focus();
$("submit1").onclick = request_brochure;
}
var $ = function (id) {
return document.getElementById(id);
}
感谢任何帮助
答案 0 :(得分:2)
我怀疑事件没有正确绑定。 window.onload
无法确保加载标识为submit_1
的元素。尝试直接将事件添加到按钮:
<input id="submit_1" onclick="request_brochure()" />
如果有效,那么问题就在于此。如果没有jQuery,你可以通过将$("submit1").onclick = request_brochure;
放在页面末尾的<script>
中来实现绑定事件,但结果将从浏览器混合到浏览器。我真的建议使用jQuery(function () { $("submit1").onclick = request_brochure; })
,并确定何时将页面完全加载到库中,因为它已经过多年的尝试和测试,并且失败的可能性要小得多。本土方法。
关于你的问题的评论有很多道理,我不想看到你走上jQuery的高级别的道路,旨在让非程序员和程序员能够获得很少的javascript知识和#39;更容易。话虽如此,浏览器的景观非常丛林,世界上超过一半的人都使用IE 8或更低版本(到目前为止,我可能错了,但我确定它仍然相当可观),jQuery的低级内容(如$.ajax
,$(function () {})
和嘶嘶声选择引擎)在我看来是不可或缺的。这些实用程序(jQuery的低级功能)的主要目的是解决浏览器碎片问题并使开发人员更容易实现。知道底层代码很好,但我会在心跳中采用$ .ajax而不是HttpXmlRequest的任何实现(我还记得IE6的activeX组件的日子......那些是黑暗的次)。如果没有先学习$('#some-form-field').val()
,就不要document.getElementById('some-form-field').value
而你应该没问题。)