2012-02-07 2 views
0
var $imagefile = $('<input />') 
    .attr({ 
     type: 'file', 
     name: 'imageFile', 
     id: 'imageFile' 
    }); 

위의 내용은 파일 입력을 생성하는 코드입니다.파일 입력이 비어 있으면 경고를 표시하지 않는 방법은 무엇입니까?

function validation() { 

    var marks = parseInt($("#total-weight").text());  
    var _qid = ""; 
    var _msg = ""; 


    var allowedTypes = ["jpg", "jpeg", "gif", "png"]; 

    var path = $("#imageFile").val(); 
    var ext = path.substring(path.lastIndexOf('.') + 1).toLowerCase(); 

    var alertValidation = ""; 
    // Note, this is just so it's declared... 
    $("tr.optionAndAnswer").each(function() { 


     _qid = $("td.qid",this).text(); 
     _msg = "You have errors on Question Number: " + _qid + "\n"; 


     $("#imageFile",this).each(function() { 

      if ($.inArray(ext, allowedTypes) < 0) { 
       alertValidation += '\n\u2022 Unsupported file type'; 
      } 

      if (alertValidation != "") { 
       return false; //Stop the each loop 
      } 
     }); 

     if(alertValidation != ""){ 
      return false; 
     } 
    }); 


    if (alertValidation != "") { 
     alert(_msg + alertValidation); 
     return false; 
    } 

    return true; 
} 

지금이 파일 형식이 정확하고 잘못된 인 인식하여 잘 작동 : 아래

는 파일 형식이 테이블 행에 맞는지 확인하는 코드입니다. 문제는 모든 테이블 행에서 사용자가 파일을 선택하지 않으면 잘못된 경고가 발생한다는 것입니다.

사용자가 파일을 선택하지 않은 빈 파일 입력을 허용하려면 어떻게해야합니까? 에서

답변

1

이 루틴

$("#imageFile",this).each(function() { 

     if ($.inArray(ext, allowedTypes) < 0) { 
      alertValidation += '\n\u2022 Unsupported file type'; 
     } 

     if (alertValidation != "") { 
      return false; //Stop the each loop 
     } 
    }); 

당신은이 값이 있는지 확인하고, 만약 그렇다면, 처리를 계속해야한다. 이런 식으로 뭔가 : 우리의 의견 후

$("#imageFile",this).each(function() { 
    if($(this).val().length) { 
     // continue on 
    } 
}); 

, 당신은 아마 클래스 선택 대신의 ID 선택기를 사용한다. 그래서 생성 코드는 아마도과 같아야합니다

var $imagefile = $('<input />') 
.attr({ 
    type: 'file', 
    name: 'imageFile', 
    class: 'imageFile' 
}); 

그리고 당신의 일상은 다음과 같아야합니다

$(".imageFile",this).each(... 

이 방법을 사용하면 수 모음을 통해으로 반복.

+0

안녕하세요, 하나의 작은 질문입니다. 파일 입력이있는 두 개의 테이블 행이있는 경우 첫 번째 행의 비트 맵 파일과 두 번째 행의 PNG 비트 맵 파일을 선택하면 실제로는 경고가 표시되지 않습니다. 비트 맵이기 때문에 첫 번째 행에 대한 경고를 표시합니다. 왜이 행에 대해 경고 메시지가 표시되지 않습니까? – user1182476

+0

파일 유형 선택기에'id' 속성을 사용하는 것과 관련이 있다고 생각합니다. 페이지 당 한 번만'id'를 가질 수 있고, 둘 이상이면'IDS'가 DOM의 이전 ID를 대체합니다. 따라서 귀하의 예에서 두 번째 파일 유형 입력 **에는 ** 유효한 파일 형식이 있으므로 경고가 표시되지 않습니다. 그게 도움이 되니? – daniel0mullins

+0

#imageFile을 .imageFile로 변경했지만 여전히 동일한 문제가 있습니다. 첫 번째 행이 비트 맵이고 두 번째 행이 png 인 경우 오류를 표시하지만 다른 방향으로 돌아 가면 오류가 표시되지 않습니까? – user1182476

관련 문제