2011-10-29 79 views
0

我正在使用Jquery允許用戶通過Ajax上傳圖像(實際提交表單之前的圖像上傳)。我已經添加了爲每個上傳的圖片添加水印的功能(這是在upload_image.php中完成的),這部分工作正常。Jquery val()總是抓住第一個選擇值無論選擇哪一個

用戶可以通過表單選擇來選擇他們想要在其圖像上放置水印的位置。我使用Jquery的.val()來獲取id =「watermark」的值select並將其添加爲要傳遞給upload_image.php的查詢字符串值。

問題是無論我在表單中選擇了什麼,總會傳遞第一個選擇值。我試圖把它放在一個函數中(認爲它是在頁面加載時獲得的值),但沒有運氣。我改變了選擇單選按鈕。它仍然抓取頁面上第一個單選按鈕的值;不管你選擇什麼。

這裏是處理這個腳本的一部分:

<script type="text/javascript" > 
$(function(){ 

    // build URL to php upload script with watermark placement 
    function setWatermark() { 
     var uploadUrl = 'http://www.mysite.com/upload_image.php?w='; 
     var watermarkValue = $('#watermark').val(); 
     var watermarkUrl = uploadUrl + watermarkValue; 
     return watermarkUrl; 
    } 

    var btnUpload=$('#upload'); 
    new AjaxUpload(btnUpload, { 
     action: setWatermark(), 
     name: 'uploadfile', 
    }); 

}); 
</script> 

這是形式(除去不相干字段):

<form id="image_form" action="this_form.php" method="post" enctype="multipart/form-data"> 
    <select id="watermark"> 
     <option value="top_left">Top Left</option> 
     <option value="top_right">Top Right</option> 
     <option value="center">Center</option> 
     <option value="bottom_left">Bottom Left</option> 
     <option value="bottom_right">Bottom Right</option> 
    </select> 
    <div id="upload" ><span><img src="upload_button.jpg" /></span></div> 
</form> 

回答

5

要執行該代碼:

new AjaxUpload(btnUpload, { 
    action: setWatermark(), 
    name: 'uploadfile', 
}); 

瀏覽器必須首先構造傳遞給構造函數的參數。要構造第二個參數,該對象必須調用setWatermark以獲取action屬性的值。這是你的問題所在;在創建AjaxUpload對象時正在調用setWatermark

我不知道AjaxUpload是什麼,但是當你需要action而不是將它作爲常量提供給選項時,你必須找到一種方法來調用函數。

相關問題