2013-01-16 3 views
1

파일을 업로드하려고합니다. 이 코드jquery가 양식 제출을 방지합니다.

$(document).ready(function() { 
    $('#form_model_upload').submit(function (e) { 
    var isvalid = true; 
    var val = $('#model').val(); 
    if (!val || val == "") { 
     $('#err_model').html('please select an image'); 
     isvalid = false; 
    } else { 
     var ext = $('#model').val().split('.').pop().toLowerCase(); 
     if ($.inArray(ext, ['gif', 'jpg', 'jpeg']) == -1) { 
     $('#err_model').html('invalid file extension').show(); 
     isvalid = false; 
     } 
    } 
    return isvalid; 
    }); 
}); 
여기

내 HTML 코드

<form action="<?php echo $editFormAction; ?>" method="POST" name="form_model_upload"> 
     <input type="hidden" name="vendor_id" value="<?php echo $_SESSION['vendor_id']?>" /><tr><td></td><td><span id="err_model"></span></td></tr> 
     <tr><td>Model:</td><td><input type="file" name="model" id="model"/></td> 
     </tr> 

     <tr><td>Description:</td><td><textarea rows="5" cols="30" name="description" id="description" ></textarea></td></tr> 
     <tr><td>Category:</td><td><select name="category_model" id="category_model"> 
     <?php $categories=$doc->getElementsByTagName("category"); 
     foreach($categories as $category) 
     {//$category_node=$category->getElementsByTagName("cat_val"); 
     $category_value=$category->nodeValue; 
     echo '<option value="'.$category_value.'">'.$category_value.'</option>'; 
     }?> 

     </select> </td></tr> 
     <tr><td></td><td><input type="submit" name="upload_submit" id="upload_submit" value="upload" /></td></tr> 
     <input type="hidden" name="MM_insert" value="upload_model" /> 
     <input type="hidden" name="MM_insert" value="form_model_upload" /> 
     </form> 

가 있지만 검증이 실패하는 경우에도 양식을 제출을 사용하여 검증? 유효성 검사 실패시 양식 제출을 방지하고 싶습니다.

+0

e.preventDefault '()'또는 '거짓 반환;'또는'이 isvalid 복귀시킨 후, 상기 isvalid = 거짓'대신에 ''. – Jai

+0

잘못 제출하면 예제를 보여줄 수 있습니까? HTML을 게시 할 수 있습니까? – Alexander

+0

코드가 작동합니다. http://jsfiddle.net/9z69G/ –

답변

0
$(document).ready(function() { 
    // move this var outside of submit 
    var isvalid = false; 
    $('#form_model_upload').submit(function (e) { 
    // block submit if false (it will be the first time) 
    if(!isvalid){ e.preventDefault(); } 
    // set true state here before the validation test 
    isvalid = true; 
    var val = $('#model').val(); 
    if (!val || val == "") { 
     $('#err_model').html('please select an image'); 
     isvalid = false; 
    } else { 
     var ext = $('#model').val().split('.').pop().toLowerCase(); 
     if ($.inArray(ext, ['gif', 'jpg', 'jpeg']) == -1) { 
     $('#err_model').html('invalid file extension').show(); 
     isvalid = false; 
     } 
    } 
    // if form is valid, submit form 
    // isvalid is now true so e.preventDefault() wont fire 
    if(isvalid){ 
     $(this).submit(); 
    } 
    }); 
}); 
+0

줄을 설명해 주시겠습니까 $ (@). submit(); – Kamran

+0

죄송합니다, 저는 coffeescript 모드였습니다. $ (this) .submit();이어야합니다. 폼 제출을 트리거하고 함수를 다시 실행합니다. – Fresheyeball

관련 문제