JavaScript函数未触发
我有两个主要函数,除了变量名和它使用的表外,它们几乎完全相同 我正在使用phonegap、html、javascript和JQuery Mobile 当第一个警报出现时,将达到函数eventSoccer,但是没有存储数据输入,而页面只是刷新 函数registerUser工作正常,将显示sql查询,并显示“用户已注册”警报,数据位于数据库中 有人能确定为什么功能事件足球似乎不起作用吗?因为这两个功能几乎完美无瑕 赛事足球-JavaScript函数未触发,javascript,jquery,function,cordova,jquery-mobile,Javascript,Jquery,Function,Cordova,Jquery Mobile,我有两个主要函数,除了变量名和它使用的表外,它们几乎完全相同 我正在使用phonegap、html、javascript和JQuery Mobile 当第一个警报出现时,将达到函数eventSoccer,但是没有存储数据输入,而页面只是刷新 函数registerUser工作正常,将显示sql查询,并显示“用户已注册”警报,数据位于数据库中 有人能确定为什么功能事件足球似乎不起作用吗?因为这两个功能几乎完美无瑕 赛事足球- function eventSoccer() { alert("e
function eventSoccer() {
alert("eventSoccer hit");
var TitleT = document.getElementById("txttitle").value;
var LocationL = document.getElementById("txtlocation").value;
var PeopleP = document.getElementById("txtpeople").value;
var DateD = document.getElementById("txtdate").value;
var DescriptionD = document.getElementById("txtdesc").value;
db = window.openDatabase("SoccerEarth", "2.0", "SoccerEarthDB", 2 * 1024 * 1024);
db.transaction(function(tx) {
NewSoccer(tx, TitleT, LocationL, PeopleP, DateD, DescriptionD);
}, errorEvent, successEvent);
}
function NewSoccer(tx, TitleT, LocationL, PeopleP, DateD, DescriptionD) {
var _Query = ("INSERT INTO SoccerEvents(Title, Location, NoPeople, Date, Description) values ('" + TitleT + "','" + LocationL + "','" + PeopleP + "','" + DateD + "', '" + DescriptionD + "')");
alert(_Query);
tx.executeSql(_Query);
}
function errorEvent(error) {
navigator.notification.alert(error, null, "Event not created", "cool");
}
function successEvent() {
navigator.notification.alert("The event has now been created", null, "Information", "ok");
}
注册器-
function registerUser() {
var Username = document.getElementById("txtusername").value;
var Firstname = document.getElementById("txtfirstname").value;
var Lastname = document.getElementById("txtlastname").value;
var Email = document.getElementById("txtemail").value;
var Password = document.getElementById("txtpassword").value;
var Confirmpass = document.getElementById("passwordconfirm").value;
db = window.openDatabase("SoccerEarth", "2.0", "SoccerEarthDB", 2 * 1024 * 1024);
db.transaction(function(tx) {
NewUser(tx, Username, Firstname, Lastname, Email, Password, Confirmpass);
}, errorRegistration, successRegistration);
}
function NewUser(tx, Username, Firstname, Lastname, Email, Password, Confirmpass) {
var _Query = ("INSERT INTO SoccerEarth(UserName, FirstName, LastName, Email, Password, CPass) values ('" + Username + "','" + Firstname + "','" + Lastname + "','" + Email + "', '" + Password + "', '" + Confirmpass + "')");
alert(_Query);
tx.executeSql(_Query);
}
function errorRegistration(error) {
navigator.notification.alert(error, null, "Got an error mate", "cool");
}
function successRegistration() {
navigator.notification.alert("User data has been registered", null, "Information", "ok");
}
HTML-
<div data-role="content">
<br>
<form>
<label for="txttitle">Title</label>
<input type="text" id="txttitle">
<br>
<label for="txtlocation">Location</label>
<input type="text" id="txtlocation">
<br>
<label for="txtpeople">Number Of People</label>
<input type="text" id="txtpeople">
<br>
<label for="txtdate">Date</label>
<input type="text" id="txtdate">
<br>
<label for="textdesc">Description</label>
<textarea name="textarea" id="textdesc"></textarea>
<br>
<input type="submit" value="submit" onclick="return eventSoccer()">
</form>
</div>
标题
位置
人数
日期
描述
我想它在这里中断了:
var DescriptionD = document.getElementById("txtdesc").value;
document.getElementById(“txtdesc”)=null,因为HTML中没有“txtdesc”(您没有“textdesc”)
因此,我们有document.getElementById(“txtdesc”).valuenull.value-它肯定会抛出错误,并中断代码的正常执行
顺便说一句,我不明白这到底是怎么回事:
<input type="submit" value="submit" onclick="return eventSoccer()">
我至少要用这种形式写:
<input type="submit" value="submit" onclick="eventSoccer(); return false;">
这样提交点击就不会发送表单了?或者您的目的是发送表单?无论如何,这是你们的选择。什么样的HTML元素触发了这个函数?问题太广泛了,前提是数据太少。你使用了很多技术,其中一种可能会导致你的问题。事实上,回答这个问题就像从1到100猜一个数字。要找到bug,您需要将代码分解为解耦的组件。我看到这些组件可能会失败:数据库、html输入、jquery mobile、navigator.notification.alert。把东西分开,这样你就可以分别测试其中的问题。首先,可能是你的浏览器给了你控制台。错误。这是怎么一回事?第二,jQueryMobile在依赖于id属性的所有东西中都有一个非常令人厌恶的UI系统,您可以将id用于文本区域。简言之,如果您使用jQM并通过ajax加载几个页面,那么它们不能包含同名的id。这包括重新加载同一页面。第三,检查数据库是否存在SoccerEvents表。除此之外,我们看到的只是冰山一角。这是不够的。您使用的提交必须阻止提交,这是您刷新表单$(“#form_id”).submit(函数(事件){alert(“调用了.submit()的处理程序”);event.preventDefault();});琼,你是传奇人物!错误的字段名是问题所在,不敢相信我没有发现它,谢谢你的帮助!不过,我还有一个问题一直没有解决,如果你对此有任何反馈,那就太好了-我会给你一张赞成票,但我是stackoverflow的新手,所以我甚至还没有15%的声誉可以给你一张赞成票。stackoverflow>help>tour中的一句话-'提问者可以将一个答案标记为“已接受”“^^^当我投票时—“谢谢你的反馈!一旦你赢得了总共15个声誉,你的投票将改变公开显示的帖子分数”我在14,如此接近!!