2017-02-04 58 views
1

的提交後我有一個表格關閉窗口形式

<form name="thumbnail" action="<?php echo $_SERVER["PHP_SELF"];?>" method="post"> 
    <input type="hidden" name="x1" value="" id="x1" /> 
    <input type="hidden" name="y1" value="" id="y1" /> 
    <input type="hidden" name="x2" value="" id="x2" /> 
    <input type="hidden" name="y2" value="" id="y2" /> 
    <input type="hidden" name="w" value="" id="w" /> 
    <input type="hidden" name="h" value="" id="h" /> 
    <input type="submit" name="upload_thumbnail" value="Save Image" id="save_thumb"/> 
    <?php $_SESSION['image1'] = $thumb_image_name.$_SESSION['user_file_ext'];?> 
</form> 

我想完成這個功能

$(document).ready(function() { 

    $('#save_thumb').click(function() { 
     var x1 = $('#x1').val(); 
     var y1 = $('#y1').val(); 
     var x2 = $('#x2').val(); 
     var y2 = $('#y2').val(); 
     var w = $('#w').val(); 
     var h = $('#h').val(); 
     if(x1=="" || y1=="" || x2=="" || y2=="" || w=="" || h==""){ 
      alert("Please Select Area to Crop"); 
     }else{ 

     return true; 
     } 
    }); 


}); 

問題是後關閉此表,如果我把window.close()的;在返回true之前; 窗口關閉,但窗體不提交,如果我把它返回true;那麼窗口將不會關閉。

這不是工作

$("thumbnail").submit(function() { 
    $.post($(this).attr('action'), $(this).serializeArray()); 
    window.close(); 
}); 

這也不能正常工作:

function closeSelf(){ 
     document.forms['thumbnail'].submit(); 
     window.close(); 
} 

<input type="submit" name="upload_thumbnail" value="Save Image" id="save_thumb" onclick="closeSelf();"/> 
+0

表單提交需要轉到另一個頁面,因此它需要提交頁面。它後面的代碼將不會運行。所以你需要提交後的下一頁上的代碼來調用close。 – epascarello

回答

1

一個Ajax表單提交可能會幫助你。點擊提交表單並完成ajax請求後,您可以關閉該窗口。像這樣的東西

$(document).ready(function() { 
    $('[name="thumbnail"]').submit(function() { 
     <Perform your validation here> 
     $.ajax({ 
       url: $('[name="thumbnail"]').attr('action'), 
       method: 'post', 
       data: $('[name="thumbnail"]').serialize(), 
       success: function (data, status) { 
       window.close(); 
       } 

     } 
    } 
} 
+0

這是工作。 – DragonFire

0

試試這個:

$('[name="thumbnail"]').submit(function() { 
var x1 = $('#x1').val(); 
    var y1 = $('#y1').val(); 
    var x2 = $('#x2').val(); 
    var y2 = $('#y2').val(); 
    var w = $('#w').val(); 
    var h = $('#h').val(); 
    if(x1=="" || y1=="" || x2=="" || y2=="" || w=="" || h==""){ 
     alert("Please Select Area to Crop"); 
    }else{ 
     $.post($(this).attr('action'), $(this).serializeArray()); 
     window.close(); 
    } 
}); 
+0

不,這是不是獨立工作或取代了點擊的功能 – DragonFire

+0

對不起,JQuery選擇器是錯誤的嘗試更新的答案。 – 2017-02-04 05:45:36

+0

其關閉,但表單操作未發生 – DragonFire