ФорумПрограммированиеJavaScript → Ещё глюк с инпутом и JQ

Ещё глюк с инпутом и JQ

  • Ёл

    Сообщения: 48 Репутация: N Группа: Кто попало

    Spritz 16 октября 2010 г. 13:20

    Друзья! Братья-пыхари! Пыхнул я сегодня не на шутку и сталкнулся с глюком невиданным!

    Надо мне динамически сделать несколько инпутов, у каждого свой личный value, который меняю при создании инпута.
    У меня есть оригинальный инпут, который лежит в скрытом слое, который я при надобности просто копирую и вставляю куда надо.
    Всё прекрасно, но (сссука) value у инпута ОБНУЛЯЕТСЯ, если этот value был изменён динамически =(

    Попробуйте этот код

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
    $(document).ready(function()
    {
    // меняем значение поля
    $('#source_input input').attr('value', 'new_value');

    // но при его копировании установлено старое значение!
    $('#copy_input').html('Копия:' + $('#source_input').html());
    });
    </script>
    </head>
    <body>
    Оригинал: <span id="source_input"><input type="text" name="myinput[]" value="old_value"/></span>
    <div id="copy_input"></div>
    </body>
    </html>
    Спустя 198 сек.
    Точнее не обнуляется, а восстанавливается как был до изменения,
    т.е было: old_value
    изменил на: new_value

    но если этот инпут скопировать и вставить куда-нить его у него будет old_value =(
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 16 октября 2010 г. 16:15, спустя 2 часа 55 минут 19 секунд

    ну, да
    Спустя 28 сек.
    я не помню что делал, но что-то делал, ща мож найду
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 16 октября 2010 г. 16:18, спустя 2 минуты 42 секунды

    ну кто же валую то меняет так?)) ты атрибут меняешь, а не дом свойство скорее всего, поэтому и происходит такой глюк видимо

    надо юзать obj.val('newval');
    Сапожник без сапог
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 16 октября 2010 г. 16:21, спустя 3 минуты 28 секунд

    не нашел и не вспомнил, но дуд вроде прав
  • Ёл

    Сообщения: 48 Репутация: N Группа: Кто попало

    Spritz 16 октября 2010 г. 16:41, спустя 19 минут 37 секунд

    phpdude, не, attr() заюзал когда val() несработал, стал раз функции пробовать, обе они дают одинаковый результат =(

    пока есть только одна мысль, надо менять value уже после копирования,
    но у меня контейнер который будет хранить инпут может хранить кучу уже вставленных подобных инпутов…
    как отловить последний вставленный (чтобы поменять value у него)?
    или какие есть ещё пути?
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 16 октября 2010 г. 16:44, спустя 3 минуты 3 секунды

    как отловить последний вставленный (чтобы поменять value у него)?

    записать его в переменную =DDD
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 16 октября 2010 г. 16:45, спустя 1 минуту 37 секунд

    Ёл, чреез зад лезешь в рот)

    var copy = $("#id input").clone(true).val("newval");
    var $("#dst").append(copy);

    все, можно даже в 1 строку записать :-)
    Сапожник без сапог
  • Ёл

    Сообщения: 48 Репутация: N Группа: Кто попало

    Spritz 16 октября 2010 г. 18:21, спустя 1 час 36 минут 12 секунд

    phpdude, спасибо!

    я пытался clone применить, но так как мне нужно копировать не только инпут а ещё и всякий хтмл с ним, то clone().val() нельзя было на инпут повесить, в общем нахуевертил так, что решил что clone в моём случае нихуя не работает =D
    благодаря тебе решил попробовать ещё раз и ура разобрался!

    Вот рабочий код
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
    $(document).ready(function()
    {
    // создаст 10 инпутов с разными value
    for(var i=10; i>0; i–)
    {
    $('#sample_content input').val(i);
    $('#sample_content div').clone().appendTo('ul');
    }
    });
    </script>
    </head>
    <body>
    <ul></ul>

    <div id="sample_content" style="display:none">
    <div>
    <li>
    <input type="text" name="myinput[]" value=""/>
    <a href="remove">удалить</a>
    </li>
    </div>
    </div>
    </body></html>




  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 17 октября 2010 г. 2:27, спустя 8 часов 5 минут 38 секунд

    Ёл, если клону передавать тру, то он скопирует или и функции-обработчики событий и прочие прелести, надо ли тебе это я конечно хз)
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!