2011-10-29 46 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而不是将它作为常量提供给选项时,你必须找到一种方法来调用函数。

相关问题