フィールドが動的に追加されたフォームがあります。
function addFieldRow() {
$('.form-container').append('
<div><input type="text" name="name[1]"></div>
<div>
<select name="choice[1]">
<option value="red">red</option>
// . . .
</select>
</div>
// . . .
');
}
次に、宣言された配列 form_validation ルールを使用して、これらをそれぞれの CodeIgniter コントローラーに渡します。
$this->form_validation->set_rules('name[]', 'text field', 'required');
// . . . other fields' rules
問題は、動的に追加されたフォームのいずれかにエラーがある場合、これらはビューの読み込み中に消えてしまうことです。検証がエラーで実行された後、動的に追加されたフォームフィールドを保持する方法を知りたい:
if ($this->form_validation->run() == FALSE) {
// do stuff to preserve the dynamically created fields to show their errors
$this->load->view('user_addresses_view');
}
より良い解決策
ajax
CodeIgniter フレームワークでフォームのそれぞれのコントローラーに接続するために使用して、これらの動的に追加された要素を保持するソリューションを見つけました。このメソッドは次のことができます。
- ページを更新せずにクライアント側とサーバー側の検証を行う
- ページは更新されないため、これらの動的に追加されたフォーム要素はすべて消えません!
james246によるソリューション