Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Jquery] Podstawianie wartośc w pole input - problem
Forum PHP.pl > Forum > Przedszkole
marecki86
Witam
Pewnie jest to proste jak drut ale potrzebuję pomocy.
Próbuję uzupełnić pole <input> wartością klikniętej komórki w tabeli. Poniżej kod
  1. $(document).ready(function(){
  2. $('.komorka').click(function(){
  3. $('.komorka').css('background-color', '#F5F5F5'); $(this).css('background-color', '#40E0D0'); $(this).html($("#symbol1").val()); return true; });
  4. });
  5.  

Każda komórka tabeli jest
  1. <td class="komorka"></td>

Oraz input:
  1. <input type="text" id="symbol1" name="symbol1" value="'1111'"/>


W takiej postaci kolor się zmienia, wartość z input wskakuje w każdą komórkę. Ładnie - ale jak przerobić żeby to po kliknięciu w komórkę wartość komórki wskoczyła do pola input? Jeśli zrobię identycznie zamieniając współczynniki:
  1. $("#symbol1").html($(this).val());

to nie działa prawidłowo - pole input robi się puste. Jak to obejść?
Orzeszekk
Moze zamiast się meczyć, użyjesz gotowego color pickera?

np ten: http://jscolor.com/

myślę że szkoda czasu na męczenie sie z javascriptami.

moze zamiast wpisywac do inputa w html sprobuj przypisac wartosc do innerText.

ściągnij mozilla firebuga/opera dragonfly/ F12 w IE, ustaw breakpoint na linijke której nie jesteś pewien i obejrz sobie pod debugerem jakie wartosci mają te zmienne. Pomoc ci moze tez rozpisanie tych wyrażen na pojedyncze instrukcje

$("#symbol1").html($(this).val());

->

var input = $("#symbol1");
var valueOfCelll= $(this).val();
input.html(valueOfCell);

prędzej zobaczysz gdzie ci coś ginie.

Ostatecznie może spróbuj

$("#symbol1").val($(this).val()); questionmark.gif?
marecki86
Cytat(Orzeszekk @ 21.11.2011, 23:27:45 ) *
moze zamiast wpisywac do inputa w html sprobuj przypisac wartosc do innerText.

ściągnij mozilla firebuga/opera dragonfly/ F12 w IE, ustaw breakpoint na linijke której nie jesteś pewien i obejrz sobie pod debugerem jakie wartosci mają te zmienne. Pomoc ci moze tez rozpisanie tych wyrażen na pojedyncze instrukcje

$("#symbol1").html($(this).val());

->

var input = $("#symbol1");
var valueOfCelll= $(this).val();
input.html(valueOfCell);

prędzej zobaczysz gdzie ci coś ginie.

Ostatecznie może spróbuj

$("#symbol1").val($(this).val()); questionmark.gif?


Próbowałem i tak i tak - nadal nie wpisuje wartości do input po kliknięciu - jedynie robi się puste. Ma ktoś jeszcze jakieś pomysły..?
gorden
$('#symbol1').val($(this).html());
marecki86
Cytat(gorden @ 22.11.2011, 17:59:49 ) *
$('#symbol1').val($(this).html());


Wow. Wielkie dzięki - działa jak trza thumbsupsmileyanim.gif Wiedziałem że byłem blisko... tongue.gif Dzięki

Cytat(gorden @ 22.11.2011, 17:59:49 ) *
$('#symbol1').val($(this).html());


Jednak mam jeszcze pytanie - czy można jakoś zrobić tak żebym kliknął w dowolną komórkę
  1. <td class="komorka"></td>
a do
  1. <input id="symbol1"/>
żeby zawsze wskakiwała wartość np z pierwszej komórki danego wiersza tabeli...?
gorden
$('#symbol1').val($(this).parent('tr').children('td').first().html());
marecki86
Cytat(gorden @ 22.11.2011, 22:10:00 ) *
$('#symbol1').val($(this).parent('tr').children('td').first().html());


Napisałem tak jak mi podałeś - dokładnie i...nie działa.. sad.gif Konkretniej nie reaguje na kliknięcie (nic się nie dzieje)... Jakieś pomysły..?
gorden
mi jakoś działa w prowizorycznej tabeli i Twoim kodem.. może pokaż strukturę tabeli, ewentualnie kod live?
marecki86
Cytat(gorden @ 23.11.2011, 22:05:36 ) *
mi jakoś działa w prowizorycznej tabeli i Twoim kodem.. może pokaż strukturę tabeli, ewentualnie kod live?


CODE
$(document).ready(function(){
$('.komorka').click(function(){
$('#symbol1').val($(this).parent('tr').children('td').first().html());
$('.komorka').css('background-color', '#F5F5F5');
$(this).css('background-color', '#40E0D0');
return true; });
$("#dostawcy").click(function(){ $("#dostawca1").show();
});

<?php
$opis=$_POST['opis'];
require '../conn/connect.php';
$kar = mysql_query('show columns from kartoteka');
if ($opis){
$list=mysql_query("select * from kartoteka where opis like '$opis' ");
}
else{
$list=mysql_query("select * from kartoteka"); }
?>

<div id="wynik" style="background-color: #F5F5F5; width: auto; height: 250px; overflow: scroll;">
<table id="tabela1" border="1" style="empty-cells: show">
<tr>
<td>*</td>
<?php
$kar = mysql_query('show columns from kartoteka');
while ($kar2 = mysql_fetch_row($kar))
{
if ($kar2[0]=='dostawcy'){}
else { echo '<td>'.$kar2[0].'</td>';}}
echo '</tr>';
$max=mysql_num_fields($list);
while ($list2 = mysql_fetch_row($list))
{ echo '<tr>';
for ($i=0;$i<$max-1;$i++){ echo'<td class="komorka">'.$list2[$i].'</td>'; }
echo '</tr>';
} ?>
</table>
</div>


<div id="dostawca1" style="display: none"><input type="text" id="symbol1" name="symbol1" value=""/></div>


Tak to wygląda - wiem TROCHĘ to chaotyczne smile.gif Mój zamiar jest taki że jak kliknę w obojętnie którą komórkę to żeby do input "symbol1" wskakiwała zawsze wartość z DRUGIEJ komórki danego wiersza. Wszelkie poprawki w tym moim "kodzie" dozwolone wink.gif Będę wdzięczny za pomoc:)


Czy ktoś jest w stanie pomóc mi w tej kwestii...? sciana.gif

Hej. Przerobiłem Twój kod na coś takiego:
CODE
$(#symbol1).val($(this).parent('tr').children('td:nth-child(1)').html())


i działa tak jak chciałem. Może komuś się przyda. Dzięki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.