запись val() в input
Чет с огромным скрипом поддается мне jquery )))
Есть таблица <table id="table"> <tr class = 'table_body'> <td><input class='pole' type='text'/></td> <td><input class='num1' type='text'/></td> </tr> <tr class = 'table_body'> <td><input class='pole' type='text'/></td> <td><input class='num1' type='text'/></td> </tr> <tr class = 'table_body'> <td><input class='pole' type='text'/></td> <td><input class='num1' type='text'/></td> </tr> </table> и есть скрипт $(function(){ $("#table").on("change", ".table_body", function(){ $(this).find(".pole").each(function(){ var res = $(".pole").val(); $('.num1').val(res); }); }); }); Смысл, что бы что пишешь в input pole отображалось в input num1. Сейчас срабатывает только изменение в первом <tr> и меняет все input num1 Что я тут ни как понять не могу? Спасибо! |
Зачем each? Там одно pole всего.
Цитата:
$(this).find(".pole").val() // или лучше переписать как $('.pole', this).val() |
lok105,
:-? <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> $(function() { var pole = $(".pole"), num = $(".num1"); pole.each(function(indx, el) { $(el).on("input", function() { num[indx].value = el.value }) }) }); </script> </head> <body> <table id="table"> <tr class = 'table_body'> <td><input class='pole' type='text'/></td> <td><input class='num1' type='text'/></td> </tr> <tr class = 'table_body'> <td><input class='pole' type='text'/></td> <td><input class='num1' type='text'/></td> </tr> <tr class = 'table_body'> <td><input class='pole' type='text'/></td> <td><input class='num1' type='text'/></td> </tr> </table> </body> </html> |
Danik, в этом случае свою ошибку понял.
Но при этом раскладе так же при заполнении pole переписываются все input num1, а не только тот который напротив изменяемого pole. Я это и пытаюсь понять. $(function(){ $("#table").on("change", ".table_body", function(){ var cost = $(this).find(".pole").val(); $('.num1').val(cost); }) }) Рони, я наверное зря упростил скрипт для примера(не специально, просто что бы для себя раз и навсегда объяснить эту систему было понятнее)))). 1.pole заполняется автозаполнением, и первые буквы переносятся, а выбранное слово нет. 2.Скрипт не работает с подгружаемыми динамически. <tr class = 'table_body'> <td><input class='pole' type='text'/></td> <td><input class='num1' type='text'/></td> </tr> В основном я себе голову сломал, что если через this обращаться к pole, num1 не является потомком pole, это потомок table_body. и как сделать, что бы изменения касались именно выбранных pole и num1 как их связать? |
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
$(function(){ $("#table").on("change", ".table_body", function(){ var cost = $(this).find(".pole").val(); $(this).find('.num1').val(cost); }) }); да, так все работает. Просмотрел просто после того как убрал each this num1 находится в поле видимости .table_body поэтому this и заработал У меня вопрос был как быть если получение переменной pole происходит внутри функции. т.е. $(function(){ $("#table").on("change", ".table_body", function(){ $(this).find(".pole").autocomplete({ change: function(event, ui) { var ID = ui.item.id; // Достаем значение // ключа после автозаполнения // Далее json запрос по ключу $.ajax({ url: "js/data.php", dataType: "json", type: "GET", data: { id: ID }, success: function(data){ res = data; // Получаем вернувшуюся переменную со // значением, которое надо записать в num1 // И вот дальше засада... //Значение переменной res за пределы функции не //выходит, а обратится к данному полю num1 внутри функции не получается, //распространяется на все num1 //В этом и был вопрос как эту переменную передать правильно в свой num1 $(".table_body").find(".num1").val(res); // Вот тут засада } }) }); }) }); Еще раз прошу прощения, что упростил пример, видимо не правильно его упростил, впредь не буду )) |
lok105,
сохранить this в строке 2 потом использовать в строке 25 |
Сорри, не понял про сохранить this в строке 2... куда там эту самую this впихнуть?
|
Часовой пояс GMT +3, время: 16:46. |