2014-12-23 3 views
-1

У меня есть сценарий, из которого можно увидеть какое-то название. Существует кнопка «Изменить». Если пользователь нажмет на эту кнопку, этот текст будет преобразован во входной файл. Значение должно быть таким названием. Когда пользователь вводит что-либо и нажимает кнопку «Обновить», этот заголовок должен быть изменен в соответствии с текстом ввода пользователя. Например,Как установить значение для ввода, поданного из другого текста, и обновить текст на основе ввода пользователем

Существует название «Пользователь» и кнопка «Изменить». Когда пользователь нажимает кнопку «Изменить», сценарий будет изменен следующим образом: <input type="text" value="User">. И эта кнопка «Изменить» будет изменена на кнопку «Обновить». Когда пользователь вводит что-либо (например: Person) и нажимает кнопку «Обновить», входной файл будет удален, а «Обновить» снова изменится на «Изменить». так что тогда будет заголовок «Человек» и кнопка «Изменить». Я попытался это сделать. Но, поскольку я не очень хорошо разбираюсь в jQuery, я не могу сделать это отлично. Пожалуйста, помогите мне правильно сделать функциональность. Here is my fiddle.

Я думаю, если я могу исправить эту строку, моя функциональность будет правильно:

$('.title-input').val($(this).parent().find('.title').text()); 

**************** Update ***** ***************************

I can see a very similar question is posted at some minutes ago. В этом решении, каждое название может быть принят для установки начального значения ввода как таким образом:

columns.each(function(){ 

      var txt = $(this).text(); 
      var input = $('<input type="text">'); 
      input.val(txt); 
      $(this).html(input); 

     }); 

Но, шахта не связана с таблицей. Итак, как я могу исправить эту строку для установки начального значения входного файла?

$('.title-input').val($(this).parent().find('.title').text()); 
+0

Вы уже задали этот вопрос, но, похоже, вы в основном там. Просто очистите значение ввода, чтобы они перестали конкатенировать каждый раз, когда вы нажимаете edit. – Slime

+0

Нет, я не задавал этот вопрос раньше! – user1896653

+0

Но после нажатия кнопки «Редактировать» один раз все заголовки задаются как значение введенного ввода. Как я могу это предотвратить? – user1896653

ответ

0

Адрес working JSFiddle.

Пара вещей.

$("body").on('click', '.update', function() { 
    $('.title-input').keyup(function() { 
    // ... 

Во-первых, вы создаете новый обработчик событий для .title-input каждый раз, когда кнопка Update будет нажата. Это вызовет функцию keyup как миллиарды раз после нескольких «обновлений», но вы хотите, чтобы она вызывалась один раз. Вам нужно переместить его из делегата события.

Во-вторых, вам нужно подумать о том, что делает $('.title-input').val($(this).parent().find('.title').text());. Что такое this в этой области? Кнопка «Изменить» - и ее родительский элемент - body. Таким образом, вы найдете все элементы с классом заголовков в body и объедините их все вместе и установите это значение для каждого из названий.

Чтобы исправить это (и я его жестко запрограммировал), я дал каждому title div свой собственный уникальный идентификатор, так что строка задает определенный заголовок по одному.

$('#user').val($('#user').parent().find('.title').text()); 
+0

Неверная ошибка, скрипка. все заголовок устанавливается с помощью «t» изначально. Во-вторых, по какой-то причине я не могу применять индивидуальный идентификатор к каждому заголовку. Итак, я должен сделать это без id :( – user1896653

+0

Тогда в чем ваше обоснование для написания ''? Я обновил скрипку и изменил ее на '' и т. д. Он должен работать по назначению, учитывая поведение, которое вы хотели, и оно отвечает на вопрос, который вы задали в названии.Кроме того, этот ответ должен предоставить вам достаточно контекста о проблеме (что вы неправильно используете '$ (this) .parent()'), чтобы ответить на ваш вопрос. – alex

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