2012-01-24 2 views
-3

Следующий код должен обновлять скрытое поле в форме submit, но это просто не так, и я боюсь узнать, почему?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

Можете ли вы показать HTML, который отправляется в браузер без вставленного кода PHP? – 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

Это одна из первых вещей на странице 'How jQuery Works': http://docs.jquery.com/How_jQuery_Works – Jasper

+0

@archil Спасибо .. ОК, изменил ее на это, но все еще не перезаписывает текущее значение, которое последнее изображение в UL –

0

Предполагая, что цикл php запускается более одного раза, у вас возникнет проблема с идентификацией ваших изображений и ваших входов, поскольку есть несколько элементов $("#mygalthree img") и несколько input[name='item_pic_url'], поскольку все входы имеют одинаковое имя.

Edit: Чтобы уточнить, если вы посмотрите на руководство для .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/

Смежные вопросы