Bootstrap按钮状态

时间:2014-06-15 19:44:26

标签: php forms button twitter-bootstrap-3

我正在使用Twitter Bootstrap 3.1.1建立一个单页网站。 这是一个基本的"联系我们"形成。我想要实现的是如果表单提交成功,则提交按钮应该是" success"如果有错误,应该读取"错误!"目前,提交的表单将转到一个新的非约束基本html页面。 按钮的HTML是

<button type="submit" class="btn btn-primary">Submit</button>

提交的PHP是

if($send_contact){
echo "Success!";
}
else {
echo "Error!";
}

我可以使用加载状态对按钮进行编程吗? 我对ajax一无所知,思想可能会在这里得到一些帮助:)

编辑:我猜我的问题是我使用单独的文件来进行php处理。所以输出显示在那个php页面上。但我真的希望保持这种方式(即使用外部php文件),因为我在同一页面上有两个表单。现在想知道,如果我能在同一索引页面上获得模态/弹出/警报输出?

<form role="form" method="POST" action="contactusform.php" id="contactusform" data-parsley-validate>

2 个答案:

答案 0 :(得分:1)

您需要使用javascript,或者您需要使用会话。 JS首先(使用jQuery库)

$('form').on('submit', function(e){
    e.preventDefault(); //stop page from reloading
    var $this = $(this); //cache form element for use in ajax function
    $.ajax({
        url: '/',
        type: 'POST',
        data: $this.serialize(),
        dataType: 'json',
        success: function(data){
            $this.find('button[type="submit"]').text(data.msg);
        }
    });
});

然后在PHP脚本中,您将更改返回数据的方式:

   $ret = array();
   $ret['msg'] = 'Error!';
   if($send_contact){
       $ret['msg'] = 'Success!';    
   }
   echo json_encode($ret);

如果使用会话,您将按如下方式更改按钮状态:

<button type="submit" class="btn btn-primary"><?php isset($_SESSION['msg']) ?: 'Submit'; ?></button>

使用三元运算符来评估$_SESSION['msg']变量,如果为true,则使用会话变量的值,否则,它使用&#39;提交&#39;。

您还需要确保在页面顶部使用session_start();(在输出任何空格或其他错误数据之前)。

然后您需要再次修改条件语句:

$_SESSION['msg'] = 'Error!';
if($send_contact){
    $_SESSION['msg'] = 'Success!';    
}
header("Location: http://domain.tld/path/to/script.ext");

最后,您应该在生成按钮的文本后销毁会话变量,以确保在重新加载页面时重置按钮

unset($_SESSION['msg']);

答案 1 :(得分:0)

只需将整个按钮放在条件检查中:

if($send_contact){
    echo '<button type="submit" class="btn btn-success">Success!</button>';
} else {
    echo '<button type="submit" class="btn btn-warning">Error!</button>';
}