Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript函数未触发_Javascript_Jquery_Function_Cordova_Jquery Mobile - Fatal编程技术网

JavaScript函数未触发

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

我有两个主要函数,除了变量名和它使用的表外,它们几乎完全相同

我正在使用phonegap、html、javascript和JQuery Mobile

当第一个警报出现时,将达到函数eventSoccer,但是没有存储数据输入,而页面只是刷新

函数registerUser工作正常,将显示sql查询,并显示“用户已注册”警报,数据位于数据库中

有人能确定为什么功能事件足球似乎不起作用吗?因为这两个功能几乎完美无瑕

赛事足球-

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,如此接近!!