■やりたいこと
自動的に追加された行の情報を追加した行の情報として扱いたい。
■実施したこと
INPUTテキスト「mail」のフォーカスを外した際、新たに1行追加されますが、
追加された行の「mail」欄に入力後、実行すると追加行が1行目に反映されてしまいます。
下記部分のname要素内の配列変数をname='Email[]'にするとうまく行きますが、
今度はSUBMIT時にフォーカスされた要素の取得ができなくなります。両方とも実装したいです。
php
1<td><input type='mail' name='Email[$i]' class='mail' value = '".$Email[$i]."' ".$focus['Email['.$i.']'].">".$email_in."</td>
名前 | |
---|---|
1行目 | 1行目 |
2行目 | 2行目 |
1行目の「mail」のフォーカスを外すと2行目が自動的に表示
実行すると2行目のmail欄に入力した情報が1行目のmail欄に反映されてしまう。
下記、全行
javascript
1//最後にフォーカスされた要素を取得する処理 2<script> 3document.addEventListener('formdata',e=>{ 4 e.formData.append('focus',document.activeElement.name); 5}); 6</script> 7 8//mail欄のフォーカスが外れると1行追加される処理 9<script> 10$(function(){ 11 $('input.mail').on('blur', function(){ 12 $('#tbl tbody tr:last-child').clone(true).appendTo('#tbl tbody'); 13 }); 14}); 15</script>
php
1$focus=["Email"=>""]; 2$focus[filter_input(INPUT_POST,"focus")]=" autofocus"; 3 4echo" 5<form method='POST'> 6<table id='tbl'> 7<thead> 8<tr><th>名前</th><th>mail</th></tr> 9</thead> 10<tbody> 11"; 12$i = 1; 13while( $i < 2 ){ //max「2」としていますが、DBに登録されているレコード分表示させる予定です。 14 echo" 15 <tr> 16 <td><input type='text' name='お名前' value='".$name[$i]."' ".$focus['お名前']."></td> 17 <td><input type='mail' name='Email[$i]' class='mail' value = '".$Email[$i]."' ".$focus['Email['.$i.']'].">".$email_in."</td> 18 </tr> 19 "; 20 $i++; 21} 22echo" 23</tbody> 24</table> 25<input type='submit' value='保存'> 26</form> 27";
回答2件
あなたの回答
tips
プレビュー