Javascript 在弹出框中提交表单

Javascript 在弹出框中提交表单,javascript,php,html,forms,Javascript,Php,Html,Forms,我在弹出框中创建了一个登录表单。当用户名字段留空时,将显示一条错误消息,通知用户填写空用户名字段。作为测试,我单击login按钮,留下username字段,消息会按预期显示在弹出框中。但问题是弹出框会立即关闭。 因此,我的问题是如何保持弹出框打开并显示错误消息 这是我的剧本: <!doctype html> <html lang="en-US"> <head> <meta http-equiv="Content-Type" content="text

我在弹出框中创建了一个登录表单。当用户名字段留空时,将显示一条错误消息,通知用户填写空用户名字段。作为测试,我单击login按钮,留下username字段,消息会按预期显示在弹出框中。但问题是弹出框会立即关闭。 因此,我的问题是如何保持弹出框打开并显示错误消息

这是我的剧本:

<!doctype html>
<html lang="en-US">
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
  <title>Modal Login Window Demo</title>
  <link rel="shortcut icon" href="http://designshack.net/favicon.ico">
  <link rel="icon" href="http://designshack.net/favicon.ico">
  <link rel="stylesheet" type="text/css" media="all" href="http://designshack.net/tutorialexamples/modal-login-jquery/style.css">
  <script type="text/javascript" src="http://designshack.net/tutorialexamples/modal-login-jquery/js/jquery-1.9.1.min.js"></script>
  <script type="text/javascript" charset="utf-8" src="http://designshack.net/tutorialexamples/modal-login-jquery/js/jquery.leanModal.min.js"></script>
</head>

<body>
 <div id="w">
    <div id="content">
      <center><a href="#loginmodal" class="flatbtn" id="modaltrigger">Modal Login</a</center>
    </div>
</div>
<div id="loginmodal" style="display:none;">
<?php
if($_POST["loginbtn"]){
    if(!$_POST["username"]){
        echo "<center><font color=red>please fill your username</font></center>";
    }elseif(!$_POST["password"]){
        echo "<center><font color=red>please fill your password</font></center>";
    }
}
?>
    <h1>User Login</h1>
    <form method="post">
      <label for="username">Username:</label>
      <input type="text" name="username" id="username" class="txtfield" tabindex="1">

      <label for="password">Password:</label>
      <input type="password" name="password" id="password" class="txtfield" tabindex="2">

      <div class="center"><input type="submit" name="loginbtn" id="loginbtn" class="flatbtn-blu hidemodal" value="Log In" tabindex="3"></div>
   </form>
  </div>
<script type="text/javascript">
$(function(){
  $('#loginform').submit(function(e){
    return false;
  });

  $('#modaltrigger').leanModal({ top: 110, overlay: 0.45, closeButton: ".hidemodal" });
});
</script>
</body>
</html>

模式登录窗口演示
模式登录
用户登录
用户名:
密码:
$(函数(){
$('#loginform')。提交(函数(e){
返回false;
});
$('#modaltrigger').leanmodel({top:110,overlay:0.45,closeButton:“.hidemodal”});
});

使用jquery
验证引擎
。这是一个很好的一个为您的要求。
请参见

没有机会进行测试,但尝试停止单击功能的传播,这样做会告诉浏览器不要完成此事件的默认操作

$('#loginbtn').click(function(e){

    if(!$('#username').val()){
        e.stopPropagation();
    }
}))


或者,正如另一个答案所建议的那样,尝试使用jquery验证,这将有助于使所有这些更容易地工作,我喜欢使用:

这似乎与这个问题非常相似:


该答案假设您将向必要的表单元素添加
required
属性,并且如果需要旧的浏览器支持,您还将使用诸如html5shiv的polyfill。

如果示例html中缺少一些信息,则表单ID将丢失,因此jQuery将不会附加到它

我通过使用AJAX处理带有json响应的表单操作来处理这种情况

下面是我最近的一个应用程序的示例。。。请注意event.preventDefault()方法以防止表单提交

    $(function () {
        jQuery('body').on('submit', '#frmlOGIN', function (event) {
            event.preventDefault();

            jQuery.post("?action=ajax_signup", jQuery("#frmlOGIN").serialize(), function (data) {
                if (data.status == "OK") {
                    jQuery("#modal_content").html(data.content);
                } else {
                    jQuery("#error_message").html(data.response);
                }
            });
        });

        $('#modaltrigger').leanModal({
            top: 110,
            overlay: 0.45,
            closeButton: ".hidemodal"
        });
    });
下面是一个JSFIDLE示例


单击相应按钮时,
closeButton
选项将始终导致模式关闭。查看
leanModal
源代码,似乎没有任何直接的方法来操作它的事件处理回调

因此,如果您只想在字段未填充时保持表单模式打开,并让服务器端代码执行验证,则只需执行以下操作:

$('#loginform').submit(function(e){
    if(!$('#username').val()) {
        $('#loginmodal').show();
    }
    else
        console.log("Enter your username");
    return false;
});

现场演示。请注意,我在表单标记中添加了一个
id
,并修复了fiddle中一些格式错误的HTML标记。

对于这种类型的方法,请使用bootstrap@PareshGami我也尝试过引导,但是当我点击提交时弹出框将消失。要检查用户名,请使用jquery验证功能。当用户名不存在时,返回falseenter@PareshGami我想用php.Yah检查消息,这也是可能的