Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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
Jquery mobile jQuery Mobile:注入的内容出现后立即消失_Jquery Mobile_Code Injection - Fatal编程技术网

Jquery mobile jQuery Mobile:注入的内容出现后立即消失

Jquery mobile jQuery Mobile:注入的内容出现后立即消失,jquery-mobile,code-injection,Jquery Mobile,Code Injection,我有一个使用jQuery Mobile的登录页面,其中包含以下代码: <div id="loginPage" data-role="page" data-theme="a"> <div data-role="content"> <div id="alerts"></div> <form id="login-form"> <input type="text" id="use

我有一个使用jQuery Mobile的登录页面,其中包含以下代码:

  <div id="loginPage" data-role="page" data-theme="a">

    <div data-role="content">

      <div id="alerts"></div>

      <form id="login-form">

        <input type="text" id="username" name="username" value="" placeholder="username or email" />
        <input type="password" id="password" name="password" value="" placeholder="password" />

        <button id="login-button" onClick="userLogin()">Login</button>

      </form>

    </div><!-- /content -->

  </div><!-- /page -->
我还尝试了使用
.append()
而不是
.html()
。两者的结果相同。我已经注释掉了我的test
alert()
,当其中一个字段留空时,它就会工作

注入内容后,如何确保内容保留在页面上?

感谢您提供的任何帮助或见解-标记

根据Jasper的请求,以下是单击“登录”按钮时执行的所有javascript:

function userLogin() {
  var username = $("#username").val();
  var password = $("#password").val();

  if (username.length == 0 || password.length == 0) {
    $('#alerts').append('Please enter your username or email and your password.').trigger('create');
  }

  else {
    $.post("services/user-status.php", { type: 'login', username: username, password: password },
      function(data) {
        var response = data.item;
        console.log(response);
        if (response.loggedIn == false) {
          $('#alerts').html('The username/email and password you used did not work. Please try again.').trigger('create');
        }
        else {
          localStorage.userID = response.userID;
          localStorage.username = response.username;
          localStorage.userStatus = 'loggedIn';
          $.mobile.changePage('profile.html');
        }
      },'json');
  }
}

看起来您需要停止为按钮触发的
单击
事件的传播。您可以通过在
单击事件处理程序中返回
false
来执行此操作:

HTML--

下面是一个演示:

另外,由于您使用的是jQuery,因此可以像这样绑定到
元素:

$('#login-button').bind('click', userLogin);
这与将
onClick=“return userLogin()”
作为按钮的属性相同,但允许您删除内联JS


这里有一个演示:

您可以发布当您单击
登录
按钮时运行的所有代码吗?另外,什么是
.trigger('create')
(您正在尝试初始化哪个小部件)?下面是一个JSFIDLE,显示您发布的代码是有效的:。@Jasper添加了所有代码above@Jasper我删除了
.trigger('create')
,因为它只是一个没有任何小部件的
div,但它仍然在为我出现然后消失。@Jasper感谢您的帮助!我看到一切都在JSFIDLE上运行,但在我的项目中,它的行为仍然是一样的。我已经用
的实际代码以及javascript文件中与此页面相关的一些其他代码更新了我的问题。如有任何其他想法或见解,将不胜感激!这对我有用!我使用了你的第二个建议:
$('login button').bind('click',userLogin)
并将
返回false
添加到我的函数中。非常感谢你的帮助!
<button id="login-button" onClick="return userLogin()">Login</button>
function userLogin() {
    ...
    return false;
}​
$('#login-button').bind('click', userLogin);