javascript confirm 질문입니다 ㅠㅠ
본문
위시리스트의 전체삭제 관련인데요.
if (act == "alldelete")
{
var allInp = document.getElementsByTagName("input");
for (var i=0, max=allInp.length; i <max; i++)
{
if(allInp[i].type === 'checkbox'){
allInp[i].checked = true;
}
}
if(confirm("정말 삭제하시겠습니까?")) {
f.act.value = act;
f.submit();
} else {
return;
}
}
위의 코드인데..
confirm 박스가 뜨기전에 input들을 모두 체크해주고 싶은데
위의 코드는 컨펌박스가 없어져야 input 들이 모두 체크됩니다;
함수로 만들어도 마찬가지고
제이쿼리로 해도 마찬가지네요 ㅠ
!-->
답변 7
이렇게 해도 될까요?
confirm yes면, checked 하고 submit
if (act == "alldelete")
{
if(confirm("정말 삭제하시겠습니까?")) {
var allInp = document.getElementsByTagName("input");
for (var i=0, max=allInp.length; i <max; i++)
{
if(allInp[i].type === 'checkbox'){
allInp[i].checked = true;
return;
}
}
f.act.value = act;
f.submit();
} else {
return;
}
}
var i_check = 1; //for문이 돌아가면 +1
if(allInp.length == i_check){ input개수와 동일하면 실행
if (act == "alldelete")
{
var i_check = 1;
var allInp = document.getElementsByTagName("input");
for (var i=0, max=allInp.length; i <max; i++)
{
if(allInp[i].type === 'checkbox'){
allInp[i].checked = true;
}
i_check++;
}
if(allInp.length == i_check){
if(confirm("정말 삭제하시겠습니까?")) {
f.act.value = act;
f.submit();
} else {
return;
}
}
}
function fwishlist_check(f, act)에서
if (act == "alldelete") 이부분만 고쳤어요
function fwishlist_check(f, act)
{
var k = 0;
var length = f.elements.length;
for(i=0; i<length; i++) {
if (f.elements[i].checked) {
k++;
}
}
if (act == "alldelete")
{
$("input[name^=chk_it_id]").attr("checked", true);
if ($("input[name^=chk_it_id]").length == $("input[name^=chk_it_id]:checked").length)
{
if(confirm("정말 삭제하시겠습니까?")) {
f.act.value = act;
f.submit();
} else {
$("input[name^=chk_it_id]").attr("checked", false);
return;
}
}
}
else
{
if($("input[name^=chk_it_id]:checked").size() < 1) {
//var allInp = document.getElementsByTagName("input:checked");
//if(allInp.length != 0) {
alert("삭제하실 상품을 하나이상 선택해 주십시오.");
return false;
}
if(confirm("정말 삭제하시겠습니까?")) {
f.act.value = act;
f.submit();
} else {
return;
}
}
return true;
}
체크박스 함수의 콜백을 받아 컨펌창 실행
function all_check () {
var allInp = document.getElementsByTagName("input");
for (var i=0, max=allInp.length; i <max; i++) {
if(allInp[i].type === 'checkbox'){
allInp[i].checked = true;
}
}
return true;
}
if (act == "alldelete"){
if(all_check()) {
if(confirm("정말 삭제하시겠습니까?")) {
f.act.value = act;
f.submit();
} else {
return;
}
}
}
var result = confirm("정말 삭제하시겠습니까?");
if (result) ...
는 시도해보았나요?
전역 변수로 K라는 변수 하나를 미리 선언하고 초기화 값을 0으로 넣은 다음(var k=0;)
체크박스가 전부 체크되면 K 값을 1(var k=1;)로 바꾸도록 하고
컨펌의 if문 조건에 k값이 1이 참이라면 실행,
끝나면 k값을 다시 0이되도록 세팅.
이런식으로 하면 되지 않을까요?ㅎㅎ
왜인지는 모르겠으나
setTimeout 으로 해결했습니다..
모두모두 감사드립니다.
if (act == "alldelete")
{
function all_check() {
console.log('dd');
var allInp = document.getElementsByTagName("input");
for (var i = 0, max = allInp.length; i < max; i++)
{
if(allInp[i].type === 'checkbox'){
allInp[i].checked = true;
}
}
return true;
}
if (all_check())
{
window.setTimeout(function(){
var result = confirm("정말 삭제하시겠습니까?");
if(result)
{
f.act.value = act;
f.submit();
}
else
{
var allInp = document.getElementsByTagName("input");
for (var i = 0, max = allInp.length; i < max; i++)
{
if(allInp[i].type === 'checkbox'){
allInp[i].checked = false;
}
}
return;
}
}, 100);
}
}
답변을 작성하시기 전에 로그인 해주세요.