2016-10-18 3 views
0

私はブートストラップタブを使用しています。各タブにはログインフォームがあり、もう一方のタブにはサインアップフォームがあります。いずれかのフォームにエラーがある場合、最初のタブに戻ります。フォームエラーの場合は、選択したタブのままにしておいてください。

私が達成しようとしているのは、どちらのフォームにもエラーがあり、そのタブにとどまる場合です。

質問:フォームにエラーがあり、それがそのブートストラップタブに残ることを確認する方法がある場合。エラーがある場合、最初のタブに戻ります。

フォームが送信されたときに、ページがリロードされているので、私はフルビュー

<?php echo $header;?><?php echo $menu;?> 

<div class="container"> 
<div class="row"> 
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12"> 
<!-- Nav tabs --> 
<ul class="nav nav-tabs" role="tablist"> 
<li role="presentation" class="active"><a href="#login" role="tab" data-toggle="tab">Login</a></li> 
<li role="presentation"><a href="#sign_up" aria-controls="sign_up" role="tab" data-toggle="tab">Sign Up</a></li> 
</ul> 
<!-- Tab panes --> 
<div class="tab-content" style="margin-top: 5rem;"> 
<div role="tabpanel" class="tab-pane active" id="login"> 
<div class="row"> 
<div class="col-lg-6 col-lg-offset-3"> 

<div class="panel panel-default"> 

<div class="panel-body"> 

<div class="form-group"> 
<a href="<?php echo $google_login_url;?>" role="button" class="btn btn-danger btn-block"> 
<i class="fa fa-google-plus" aria-hidden="true"></i> Sign in with Google 
</a> 
</div> 

<hr /> 

<?php if (isset($login_errors)) {?> 
<?php echo $login_errors;?> 
<?php }?> 

<?php echo form_open('users/login', array('id' => 'login', 'name' => 'login', 'role' => 'form'));?> 

<div class="form-group"> 
<label for="input-username">Username</label> 
<input type="text" name="username" class="form-control" id="input-username" placeholder="Username"> 
</div> 

<div class="form-group"> 
<label for="input-password">Password</label> 
<input type="password" name="password" class="form-control" id="input-password" placeholder="Password"> 
</div> 

<div class="checkbox"> 
<label> 
<input type="checkbox"> Remember me 
</label> 
</div> 

<div class="form-group"> 
<?php 
echo form_submit('login', 'Login', array('class' => 'btn btn-primary')) 
;?> 

</div> 

<?php echo form_close();?> 
</div> 
</div> 

</div> 
</div> 
</div><!-- Login --> 

<div role="tabpanel" class="tab-pane" id="sign_up"> 
<div class="row"> 
<div class="col-lg-6 col-lg-offset-3"> 

<div class="panel panel-default"> 

<div class="panel-body"> 

<div class="form-group"> 
<a href="<?php echo $google_login_url;?>" role="button" class="btn btn-danger btn-block"> 
<i class="fa fa-google-plus" aria-hidden="true"></i> Sign in with Google 
</a> 
</div> 

<hr /> 

<?php if (isset($signup_errors)) {?> 
<?php echo $signup_errors;?> 
<?php }?> 

<?php echo form_open('users/signup', array('id' => 'form_signup', 'name' => 'signup', 'role' => 'form'));?> 

<div class="form-group"> 
<label for="input-username">Username</label> 
<input type="text" name="username" class="form-control" id="input-username" placeholder="Username"> 
</div> 

<div class="form-group"> 
<label for="input-email">Email</label> 
<input type="text" name="email" class="form-control" id="input-email" placeholder="Email"> 
</div> 


<div class="form-group"> 
<label for="input-password">Password</label> 
<input type="password" name="password" class="form-control" id="input-password" placeholder="Password"> 
</div> 

<div class="form-group"> 
<?php 
echo form_submit('signup', 'Signup', array('class' => 'btn btn-primary')) 
;?> 
</div> 

<?php echo form_close();?> 
</div> 
</div> 

</div> 
</div> 
</div><!-- Sign Up--> 

</div><!-- Tab Content --> 

</div> 
</div> 
</div> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#form_signup').submit(function() { 
     if($('#sign_up').hasClass('active')) { 
      $('#sign_up').addClass('in'); 
     } 
    }); 
}); 
</script> 
<?php echo $footer;?> 

答えて

1

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#form_signup').submit(function() { 
     if($('#sign_up').hasClass('active')) { 
      $('#sign_up').addClass('in'); 
     } 
    }); 
}); 
</script> 

を試してみましたが、あなたは、ページの読み込みに正しいタブを有効にする必要があります。あなたは、そうでない場合はログイン]タブをアクティブにし、そうならば、サインアップタブをアクティブにし、$signup_errors変数が存在するかどうかをチェックすることによってそれを行うことができます:イェルーンノッテンのアイデア作成さ

<!-- Nav tabs --> 
<ul class="nav nav-tabs" role="tablist"> 
    <li role="presentation" <?php if (!isset($signup_errors)) {?>class="active"<?php }?>><a href="#login" role="tab" data-toggle="tab">Login</a></li> 
    <li role="presentation" <?php if (isset($signup_errors)) {?>class="active"<?php }?>><a href="#sign_up" aria-controls="sign_up" role="tab" data-toggle="tab">Sign Up</a></li> 
</ul> 
<!-- Tab panes --> 
<div class="tab-content" style="margin-top: 5rem;"> 
    <div role="tabpanel" class="tab-pane<?php if (!isset($signup_errors)) {?> active<?php }?>" id="login"> 
    ... 
    </div><!-- Login --> 
    <div role="tabpanel" class="tab-pane<?php if (isset($signup_errors)) {?> active<?php }?>" id="sign_up"> 
    ... 
    </div><!-- Sign Up--> 
</div><!-- Tab Content --> 
0

ソリューション感謝をA if文と渡された変数

<?php 

if (isset($login_errors)) { 
    $class1 = 'active'; 
} else { 
    $class1 = ''; 
} 

if (isset($signup_errors)) { 
    $class2 = 'active'; 
} else { 
    $class2 = ''; 
} 

?> 

ビュー

<?php echo $header;?><?php echo $menu;?> 

<div class="container"> 
<div class="row"> 
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12"> 
<!-- Nav tabs --> 
<ul class="nav nav-tabs" role="tablist"> 

<?php 

if (isset($login_errors)) { 
    $class1 = 'active'; 
} else { 
    $class1 = ''; 
} 

if (isset($signup_errors)) { 
    $class2 = 'active'; 
} else { 
    $class2 = ''; 
} 

?> 

<li role="presentation" class="<?php echo $class1;?>"> 
<a href="#login" role="tab" data-toggle="tab">Login</a> 
</li> 
<li role="presentation" class="<?php echo $class2;?>"> 
<a href="#sign_up" aria-controls="sign_up" role="tab" data-toggle="tab">Sign Up</a> 
</li> 
</ul> 
<!-- Tab panes --> 
<div class="tab-content" style="margin-top: 5rem;"> 
<div role="tabpanel" class="tab-pane <?php echo $class1;?>" id="login"> 
<div class="row"> 
<div class="col-lg-6 col-lg-offset-3"> 

<div class="panel panel-default"> 

<div class="panel-body"> 

<div class="form-group"> 
<a href="<?php echo $google_login_url;?>" role="button" class="btn btn-danger btn-block"> 
<i class="fa fa-google-plus" aria-hidden="true"></i> Sign in with Google 
</a> 
</div> 

<hr /> 

<?php if (isset($login_errors)) {?> 
<?php echo $login_errors;?> 
<?php }?> 

<?php echo form_open('users/login', array('id' => 'login', 'name' => 'login', 'role' => 'form'));?> 

<div class="form-group"> 
<label for="input-username">Username</label> 
<input type="text" name="username" class="form-control" id="input-username" placeholder="Username"> 
</div> 

<div class="form-group"> 
<label for="input-password">Password</label> 
<input type="password" name="password" class="form-control" id="input-password" placeholder="Password"> 
</div> 

<div class="checkbox"> 
<label> 
<input type="checkbox"> Remember me 
</label> 
</div> 

<div class="form-group"> 
<?php 
echo form_submit('login', 'Login', array('class' => 'btn btn-primary')) 
;?> 

</div> 

<?php echo form_close();?> 
</div> 
</div> 

</div> 
</div> 
</div><!-- Login --> 

<div role="tabpanel" class="tab-pane <?php echo $class2;?>" id="sign_up"> 
<div class="row"> 
<div class="col-lg-6 col-lg-offset-3"> 

<div class="panel panel-default"> 

<div class="panel-body"> 

<div class="form-group"> 
<a href="<?php echo $google_login_url;?>" role="button" class="btn btn-danger btn-block"> 
<i class="fa fa-google-plus" aria-hidden="true"></i> Sign in with Google 
</a> 
</div> 

<hr /> 

<?php if (isset($signup_errors)) {?> 
<?php echo $signup_errors;?> 
<?php }?> 

<?php echo form_open('users/signup', array('id' => 'form_signup', 'name' => 'signup', 'role' => 'form'));?> 

<div class="form-group"> 
<label for="input-username">Username</label> 
<input type="text" name="username" class="form-control" id="input-username" placeholder="Username"> 
</div> 

<div class="form-group"> 
<label for="input-email">Email</label> 
<input type="text" name="email" class="form-control" id="input-email" placeholder="Email"> 
</div> 


<div class="form-group"> 
<label for="input-password">Password</label> 
<input type="password" name="password" class="form-control" id="input-password" placeholder="Password"> 
</div> 

<div class="form-group"> 
<?php 
echo form_submit('signup', 'Signup', array('class' => 'btn btn-primary')) 
;?> 
</div> 

<?php echo form_close();?> 
</div> 
</div> 

</div> 
</div> 
</div><!-- Sign Up--> 

</div><!-- Tab Content --> 

</div> 
</div> 
</div> 

<script type="text/javascript"> 
</script> 
<?php echo $footer;?> 
関連する問題