JQuery - OnClick Копировать в текстовое поле - PullRequest
0 голосов
/ 07 сентября 2011

Я пытаюсь скопировать текст из элемента списка в неупорядоченном списке в текстовое поле.

<div class='this_section_is_created_dynamically_and_repeats_up_to_99_times'>
<label>Serial</label>
<input name="part" class= "part" type="text">
<ul>
    <li class="pattern"><a href="#" class="clickme">test1</a></li>
    <li class="pattern"><a href="#" class="clickme">test2</a></li>
</ul> 

<script>

$('.clickme').live('click', function() {                

            alert($(this).text());  // this works
        // try to copy value clicked to input box. these do not work
        $(this).prevAll('[input:text]').val($(this).text()); 
        $(this).prev(":text").val($(this).text()); 
    });     

Ответы [ 2 ]

0 голосов
/ 07 сентября 2011

Попробуйте это.

$('.clickme').live('click', function(e) {
    $(".part").val($(this).html()); 
});

Вы можете сократить запрос, ссылаясь на элемент по его идентификатору или классу.Кроме того, вы можете попробовать что-то вроде этого, чтобы получить конкретный элемент ...

$('.clickme').live('click', function(e) {
    $(this).parent().parent().prev().val($(this).html());
});

Это относится к родителю (li) целевого элемента (a), а затем к родителю этого элемента (ul), затем предыдущий брат элемента (вход).

0 голосов
/ 07 сентября 2011

prev() и prevAll() посмотрите на братьев и сестер. Входные данные - это ваш брат ul, который является родителем ваших li s, которые являются родителями вашего anchors:

Это должно работать:

$(this).parent().parent().prev("input:text").val($(this).text());

Или:

$(this).parents('ul').first().prev('input:text').val($(this).text());

Вы также можете указать свой input идентификатор и просто выбрать его напрямую, а не обходить DOM.

PS. Вы должны закрыть свой входной тег: <input name="part" class= "part" type="text" />

...