순차 random? 이런 자바스크립트가 있을까요?
본문
안녕하세요.
회사내에서 필요해서 견적프로그램을 만들고 있는데요.
http://xn--w80by1ax26alkcb1d.com/estimate/test.php
-------------------------------------------------------------------------
<button id='btn-add-row'>행 추가하기</button>
<button id='btn-delete-row'>행 삭제하기</button>
<hr>
<form name="esform" method="post" action="es_ok.php">
<table id="mytable" border="1" cellspacing="0">
<tr>
<th width="200">제목</th>
<th width="150">일시</th>
</tr>
<tbody></tbody>
</table>
<br><br><br>
<input type="submit" id="" name="" value="submit" class="input_submit" />
</form>
<script src="//code.jquery.com/jquery.min.js"></script>
<script>
$('#btn-add-row').click(function() {
var max="100";
var rand2 = Math.floor(Math.random() * max); // 0 ~ (max - 1) 까지의 정수 값을 생성
var time = new Date().toLocaleTimeString();
$('#mytable > tbody:last').append('<tr><td><input name=esno'+rand2+ ' value="110"></td><td>' + rand2+time + '</td></tr>');
});
$('#btn-delete-row').click(function() {
$('#mytable > tbody:last > tr:last').remove();
});
</script>
-------------------------------------------------------------------------
이렇게 해서, 입력폼을 반복생성중입니다.
form 값을 넘기면, rand2 변수 영향으로
esno1, esno10, esno99... 이런 식으로 변수가 넘어오는데요.
이걸 random이 아니라,
<button id='btn-add-row'>행 추가하기</button> 이걸 누를때마다, 1,2,3,4,5... 순차적으로 esno에 넣고싶어요.
클릭할때다 생성이 되는거라 random 함수를 생각한건데, 실제 db 처리를 가다보니, 문제가 생길거 같네요.
고수님들, 팁을 ... 알려주시면 감사하겠습니다. ㅠ
답변 2
<input type="text" name="esno[]" ...> 배열 이름을 사용하면 됩니다.
↓ 받는 쪽에선 간편하게 아래처럼 foreach문으로 전달받은 값 사용
foreach ( $_POST['esno'] as $esno ) {
// $esno
}
for문으로는 아래처럼….
for ($i=0, $cnt=count($_POST['esno']); $i<$cnt; $i++) {
// $_POST['esno'][$i]
}
tbody > tr 개수로 100행 제한하면 편합니다.
무조건 마지막 행 삭제보다, 행마다 삭제 버튼 둬서 원하는 위치 삭제가 낫겠죠?
참고로 순차는 그냥 아래처럼 하면 됩니다. 편의상 기존변수명 그대로 사용.
$('#btn-add-row').click(function() {
var max = 100; // * string과 number 비교는 다릅니다.
var time = new Date().toLocaleTimeString();
var rand2 = $('#mytable > tbody > tr').length; // 이 값과 max 값 비교로 행 제한
$('#mytable > tbody:last').append('<tr><td><input name=esno'+rand2+ ' value="110"></td><td>' + rand2+time + '</td></tr>');
});
foreach ($i=1; $i<=100; $i++) {
$esno = isset($_POST['esno'.$i]) ? $_POST['esno'.$i] : ''; // $esno = $_POST['esno'.$i] ?? '';
// 폼 중간에 값이 없을 수 있으니 그냥 반복, 값이 있을 때 처리
}