■やりたいこと
下記画像ののようなシステムを構築しています。
・数量のフォーカスを外すと1行追加される
・SUBMIT時フォーカスされたinputの位置を保持
ですが、自動的に追加された行の値が引き継がれなくなってしまい、困っています。
上手くいくときもあるのですが、検証してもパターンがわかりません。お手数ですが、ご教示お願いします。
■検証したところ、追加された行に入力すると配列の引継ぎがうまくできていないようです。
javascri
1<script> 2$(function(){ 3 $('input.suryo').on('blur', function(){ 4 var newname=$('#tbl tbody tr:last-child [type=text]').attr('name').replace(/\d+/,r=>Number(r[0])+1); 5 $('#tbl tbody tr:last-child').clone(true).find('[type=text]').attr('name',newname).end().find('input').val('').end().appendTo('#tbl tbody'); 6 }); 7}); 8</script>
■不具合時のダンプ
array(2) { [0]=> string(1) "1" [1]=> string(1) "6" } array(1) { [0]=> string(1) "2" } array(1) { [0]=> string(1) "3" }
下記全容
php
1<?PHP 2 3$focus=filter_input(INPUT_POST,'focus'); 4$h_code=filter_input(INPUT_POST,'h_code',FILTER_DEFAULT,FILTER_REQUIRE_ARRAY)?:['']; 5$name=filter_input(INPUT_POST,'name',FILTER_DEFAULT,FILTER_REQUIRE_ARRAY)?:['']; 6$suryo=filter_input(INPUT_POST,'suryo',FILTER_DEFAULT,FILTER_REQUIRE_ARRAY)?:['']; 7var_dump($h_code); 8var_dump($name); 9var_dump($suryo); 10$count=is_array($h_code)?count($h_code):1; 11 12echo" 13<script> 14document.addEventListener('formdata',e=>{ 15 e.formData.append('focus',document.activeElement.name); 16}); 17</script> 18 19<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js'></script> 20<script> 21$(function(){ 22 $('input.suryo').on('blur', function(){ 23 var newname=$('#tbl tbody tr:last-child [type=text]').attr('name').replace(/\d+/,r=>Number(r[0])+1); 24 $('#tbl tbody tr:last-child').clone(true).find('[type=text]').attr('name',newname).end().find('input').val('').end().appendTo('#tbl tbody'); 25 }); 26}); 27</script> 28<form method='POST'> 29<table id='tbl'> 30<thead> 31<tr><th>コード</th><th>名前</th><th>数量</th></tr> 32</thead> 33<tbody> 34"; 35 36 37for($i=0;$i<$count;$i++){ 38 39 $autofocus_h=$focus=="h_code[$i]"?'autofocus':''; 40 $autofocus_n=$focus=="name[$i]"?'autofocus':''; 41 $autofocus_s=$focus=="suryo[$i]"?'autofocus':''; 42 43 echo " 44 <tr> 45 <td><input type='text' name='h_code[$i]' class='h_code' value = '$h_code[$i]' $autofocus_h ></td> 46 <td><input type='text' name='name[$i]' class='name' value = '$name[$i]' $autofocus_n ></td> 47 <td><input type='text' name='suryo[$i]' class='suryo' value = '$suryo[$i]' $autofocus_s ></td> 48 </tr> 49 "; 50 51} 52 53echo" 54 </tbody> 55</table> 56<input type='submit' value='保存'> 57</form> 58"; 59?> 60