2012-01-24 69 views
-3

下面的代码应该更新表单提交上的隐藏字段,但它根本没有,我挣扎着想知道为什么?JQuery不更新隐藏字段

代码片段:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 
<script src="/js/jquery.easing.1.3.js" type="text/javascript"></script> 
<script src="/js/jquery.slideviewer.1.2.js" type="text/javascript"></script> 

UPDATE改变了代码的建议,见下文,但仍然没有喜悦 - 也尝试IMG:第一是建议,但没有什么不同

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("#wl_add").submit(function (event) { /* form name wl_add */ 
      $(this).find("input[name='item_pic_url']") 
        .val($("#mygalthree img").attr('src')); 
      }); 
    }); 
</script> 

<div id="mygalthree" class="svw"><ul> 
<?PHP 

foreach($html->find('img') as $e){ // from simple_html_dom 

    $image = $e->src; 

    echo '<li><img src="'.$image.'" width=300 alt="" /></li>'; 
    echo '<input type="hidden" name="item_pic_url" value="'.$image.'" />'; 

?> 

</ul></div> 
+0

你有没有尝试通过你的提交处理程序?你确定知道它被调用了吗? – jrummell

+0

您可以显示未插入PHP代码的情况下发送到浏览器的HTML吗? – JohnFx

+0

因为在mygalthree div中有很多图片..使用这个.. $(“#mygalthree img:first”).attr('src') –

回答

4

你应该在document.ready之内设置事件处理程序。

<script type="text/javascript"> 
$(function(){ 
    $("#wl_add").submit(function (event) { /* form name wl_add */ 
    $(this).find("input[name='item_pic_url']") 
    .val($("#mygalthree img").attr('src')); 

    }); 
}); 
</script> 

否则,脚本将尝试绑定提交形成不存在,所以你不要提交处理程序的约束和执行。

+5

这是'如何jQuery Works'页面上的第一件事之一:http://docs.jquery.com/How_jQuery_Works – Jasper

+0

@archil谢谢..好吧,改变它,但仍然不覆盖当前值是在UL的最后一张图片 –

0

假设php循环运行不止一次,由于所有输入具有相同的名称,因此有多个元素$("#mygalthree img")input[name='item_pic_url']多个元素,因此识别图像和输入时会出现问题。

编辑:为了澄清,如果你看一下手册.attr,您将看到:

的.attr()方法获取的属性值仅在匹配集的第一个元素。

因此,在你的代码:

$(this).find("input[name='item_pic_url']") 
    .val($("#mygalthree img").attr('src')); 

您设置的所有你的隐藏元素输入到第一图像源的值。

+0

已更新的问题 –

0

尝试改变行:

$(this).find..... 

到:

$('input[name="item_pic_url"]').val($('#mygalthree img').attr('src')); 

这里通过的jsfiddle一个简单的例子。 http://jsfiddle.net/9DTUD/1/