こんにちは、いつもありがとうございます。
Cakephp3で時間割システムを作っています。
困っているのは、Bootstrapのバリデーションを使ってフォームの値をチェックしています。
イベントはfocusoutですが、写真のようにマウスでフォーカス与えたあとフォーカスを外すと、必須項目というエラーが表示されます。
これを、リセットボタンを押すことで削除したい(reloadやrefreshではなく)ですが、input type="reset" では上手くできませんでした。
何か他の方法はありませんか?
現在、リセットボタンを押すと処理されるのは以下のようです。全てのフォームをリセットするコードです。
よろしくお願いします。
Javascript
1function clearFormAll() { 2 for (var i=0; i<document.forms.length; ++i) { 3 clearForm(document.forms[i]); 4 } 5} 6function clearForm(form) { 7 for(var i=0; i<form.elements.length; ++i) { 8 clearElement(form.elements[i]); 9 } 10} 11 12function clearElement(element) { 13 14 if(element.readOnly !== true) 15 { 16 switch(element.type) { 17 case "hidden": 18 case "submit": 19 case "reset": 20 case "button": 21 case "image": 22 return; 23 case "file": 24 return; 25 case "text": 26 case "password": 27 case "textarea": 28 element.value = ""; 29 return; 30 case "email": 31 element.value = ""; 32 return; 33 case "checkbox": 34 case "radio": 35 element.checked = false; 36 return; 37 case "select": 38 case "select-one": 39 case "select-multiple": 40 $('select').each(function() { 41 $(this).children('option').removeAttr('selected'); //optionのselected要素の削除 42 this.selectedIndex= -1; //selectIndexを0に設定。 43 }); 44 return; 45 default: 46 } 47 48 } 49 else 50 { 51 return false; 52 } 53 54}
[追加]
HTMLはこんな感じです。
<!-- backgroundとログインフォームのスタイルシート定義 --> <style type="text/css"> body { background: url(/img/classroom.png) no-repeat center center fixed; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover; } .panel-default { opacity: 0.9; margin-top:30px; } .panel-info { opacity: 0.9; margin-top:30px; } .form-group.last { margin-bottom:0px; } </style> <!-- ログインフォーム領域 --> <div class="container"> <div class="row"> <div align="center"> <h2 class="form-signin-heading">大学時間割作成支援システム</h2> </div> <!--Flashメッセージ表示のためレンダリング--> <?= $this->Flash->render(); ?> <div class="col-md-6 col-md-offset-3"> <div class="panel panel-default"> <div class="panel-heading"> <span class="glyphicon glyphicon-lock"></span> ログイン </div> <div class="panel-body"> <?= $this->Form->create(null,['class'=>'form-horizontal']) ?> <div class="form-group"> <div class="col-xs-10 col-xs-offset-1"> <?= $this->Form->input('customer_no', ['class' => 'form-control','label'=>'契約番号']) ?> </div> </div> <div class="form-group"> <div class="col-xs-10 col-xs-offset-1"> <?= $this->Form->input('account', ['class' => 'form-control','label'=>'アカウント','type' => 'text']) ?> </div> </div> <div class="form-group"> <div class="col-xs-10 col-xs-offset-1"> <?= $this->Form->input('password', ['class' => 'form-control','label'=>'パスワード']) ?> </div> </div> <div class="form-group last"> <div class="col-sm-offset-4 col-sm-8"> <?= $this->Form->button('リセット', ['type'=>'button','class' => 'btn btn-default btn-sm', 'onClick' => 'clearFormAll()']); ?> <?= $this->Form->button('ログインする', ['type'=>'button','class' => 'btn btn-primary btn-sm', 'onClick' => 'submit()']); ?> </div> </div> <?= $this->Form->end() ?> </div> <div class="panel-footer" align="right"> <input id="link" type="button" value="パスワード変更" class="btn btn-success btn-sm" onmousedown="location.href='./users/change'" /> </div> </div> </div> </div> <!-- お知らせ表示領域 --> <div class="panel panel-info"> <div class="panel-heading"> <h3 class="panel-title"><strong>お知らせ</strong></h3> </div> <div class="panel-body"> <ul class="list-group"> <li class="list-group-item">2018月XX月XX日:大学時間割システムの提供開始!</li> <li class="list-group-item">2017月XX月XX日:マスタ機能のリニューアル</li> <li class="list-group-item">2017月XX月XX日:マスタ複与機能の追加</li> <li class="list-group-item">2017月XX月XX日:お正月休みのお知らせ</li> <li class="list-group-item">2017月XX月XX日:大学時間割作成支援システムのテスト運営開始!</li> </ul> </div> </div> </div> </div>
「追加記述ー試してみました。」
教えてくださってありがとうございました。
しかし、以下のコードは、テキストボックスの赤い線のみ消えて、メッセージとXボタンはそのままでした。
Javascript
1$(".form-group").removeClass('has-error');
あと、子のコードは、Uncaught TypeError: $(...).validator is not a function エラーでした。
Javascript
1$(this.form).validator('destroy').validator();
回答2件
あなたの回答
tips
プレビュー