Автор Тема: Помощ за създаване на JS код  (Прочетена 4195 пъти)

NikolaiTalev

  • Напреднали
  • *****
  • Публикации: 307
  • Distribution: Debian Wheezy
  • Window Manager: KDE
    • Профил
    • WWW
Здравейте 
имам текстово поле от което извеждам с keyup и проблема идва от там че когато се пейстне нещо с мишката трябва да се натисне и клавиш за да изведе съдържанието и затова искам да попитам как може да се направи когато се натисне Paste с десния бутон на мишката да добавя space от клавиатурата
Или ако има друг начин ще се радвам да го споделите  :)
Активен

Веднъж Linux, цял живот Linux.

http://blog.nk-support.eu/

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: Помощ за създаване на JS код
« Отговор #1 -: Feb 14, 2011, 13:46 »
Най-лесно би било да се следи за промяна на стойността на полето - прим. на всеки 200ms се проверява за промяна в стойността и ако има такава се извиква функцията ти.
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

NikolaiTalev

  • Напреднали
  • *****
  • Публикации: 307
  • Distribution: Debian Wheezy
  • Window Manager: KDE
    • Профил
    • WWW
Re: Помощ за създаване на JS код
« Отговор #2 -: Feb 14, 2011, 13:54 »
А как може да стане
ето така извеждам

Код
GeSHi (Javascript):
  1. <script type="text/javascript">
  2. $(document).ready(function() {
  3. $("#results").keyup(function() {
  4. $.post('file.php' , {
  5. results : $("#results").val()
  6. }, function(response) {
  7. $("#userResult").html(response);
  8. });
  9. });
  10. });
  11. </script>
  12.  
Активен

Веднъж Linux, цял живот Linux.

http://blog.nk-support.eu/

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: Помощ за създаване на JS код
« Отговор #3 -: Feb 14, 2011, 14:16 »
Така се прави "цикъла".
Код
GeSHi (Javascript):
  1. function looper()
  2. {
  3.    // code here
  4.    setTimeout('looper()', 200);
  5. }
  6.  
  7. looper();
  8.  

Нататък си ти :)
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

NikolaiTalev

  • Напреднали
  • *****
  • Публикации: 307
  • Distribution: Debian Wheezy
  • Window Manager: KDE
    • Профил
    • WWW
Re: Помощ за създаване на JS код
« Отговор #4 -: Feb 14, 2011, 14:57 »
Така се прави "цикъла".
Код
GeSHi (Javascript):
  1. function looper()
  2. {
  3.    // code here
  4.    setTimeout('looper()', 200);
  5. }
  6.  
  7. looper();
  8.  

Нататък си ти :)

Не се получава  ???
Доста рових из нета и попаднах на това http://pinoytech.org/question/4619375/jquery-live-search но не мога да разбера как да го направя в моя случай, но иначе забелязвам ,че няма да се обновява постоянно а след paste :)
Активен

Веднъж Linux, цял живот Linux.

http://blog.nk-support.eu/

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: Помощ за създаване на JS код
« Отговор #5 -: Feb 14, 2011, 15:28 »
Не се получава  ???

Кое?!?

Доста рових из нета и попаднах на това http://pinoytech.org/question/4619375/jquery-live-search но не мога да разбера как да го направя в моя случай, но иначе забелязвам ,че няма да се обновява постоянно а след paste :)

http://jsfiddle.net/rLAxL/1/

В Opera не работи. FF работи.
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

ivo3d

  • Напреднали
  • *****
  • Публикации: 161
  • Distribution: Mint Linux
  • Window Manager: Gnome
    • Профил
Re: Помощ за създаване на JS код
« Отговор #6 -: Feb 14, 2011, 15:33 »
А защо ползваш keyup, change не ти ли върши работа? Това събитие се извиква при всяка промяна на полето, независимо дали си изполвал клавиатурата или мишката.
Активен

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: Помощ за създаване на JS код
« Отговор #7 -: Feb 14, 2011, 15:37 »
onchange се вика при преместване на фокуса само.
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

ivo3d

  • Напреднали
  • *****
  • Публикации: 161
  • Distribution: Mint Linux
  • Window Manager: Gnome
    • Профил
Re: Помощ за създаване на JS код
« Отговор #8 -: Feb 14, 2011, 16:47 »
Ами в зависимост от случая може и да му свърши работа. Ако е примерно някаква валидация, що да не? А при autocomplete мисля, че и само кeyup върши работа.

За "paste" има събитие "paste" но не съм сигурен дали работи под всички браузъри... Иначе решението е една функция която да слухти постоянно, ама ако имаш много такива полета си е кофти решение...
Активен

NikolaiTalev

  • Напреднали
  • *****
  • Публикации: 307
  • Distribution: Debian Wheezy
  • Window Manager: KDE
    • Профил
    • WWW
Re: Помощ за създаване на JS код
« Отговор #9 -: Feb 14, 2011, 17:55 »
Значи са сега остава варианта на слуша на 200мс ,но може ли да се направи когато се кликне с мишката тогава да слуша ,а иначе да си е с keyup
Активен

Веднъж Linux, цял живот Linux.

http://blog.nk-support.eu/

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: Помощ за създаване на JS код
« Отговор #10 -: Feb 14, 2011, 18:17 »
И защо да си усложняваш живота? Би трябвало да решаваш проблем едва след като се я появил :)
Викането на подобна проста функция на всеки 200ms изобщо не натоварва.
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

NikolaiTalev

  • Напреднали
  • *****
  • Публикации: 307
  • Distribution: Debian Wheezy
  • Window Manager: KDE
    • Профил
    • WWW
Re: Помощ за създаване на JS код
« Отговор #11 -: Feb 14, 2011, 18:27 »
Да но не мога да я накарам да заработи не знам защо така ???

Правя както си написал

 
Код
GeSHi (Javascript):
  1. function looper()
  2. {
  3.    // code here
  4.    setTimeout('looper()', 200);
  5. }
  6.  
  7. looper();
Активен

Веднъж Linux, цял живот Linux.

http://blog.nk-support.eu/

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: Помощ за създаване на JS код
« Отговор #12 -: Feb 14, 2011, 18:33 »
Ако само това правип, няма как да стане :) Аз само ти написах пример за периодично викане на функция.
Там къде пише //code here трябва да си добавиш твoя код - проверка за промяна, код при възникване на промяна и т.н.
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

NikolaiTalev

  • Напреднали
  • *****
  • Публикации: 307
  • Distribution: Debian Wheezy
  • Window Manager: KDE
    • Профил
    • WWW
Re: Помощ за създаване на JS код
« Отговор #13 -: Feb 14, 2011, 18:37 »
Първия път пробвах така

Код
GeSHi (Javascript):
  1. function looper()
  2. {
  3. $(document).looper(function() {
  4. $("#results").keyup(function() {
  5. $.post('translate_lang.php?lang={LANG}' , {
  6. results : $("#results").val()
  7. }, function(response) {
  8. $("#userResult").html(response);
  9. });
  10. });
  11. });
  12. setTimeout('looper()', 200);
  13. }
  14.  
  15. looper();
  16.  
След това пробвах  още няколко варианта  ::)
« Последна редакция: Feb 14, 2011, 18:49 от NilkolaiTalev »
Активен

Веднъж Linux, цял живот Linux.

http://blog.nk-support.eu/

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: Помощ за създаване на JS код
« Отговор #14 -: Feb 14, 2011, 19:18 »
Явно си доста далече от програмирането :) Без да се обиждаш ;)

Код
GeSHi (Javascript):
  1. Function.prototype.defer = function(scope, timeout, args)
  2. {
  3. var self = this;
  4. var fn = function () {self.apply(scope || window, args || [])};
  5.  
  6. return setTimeout(fn, timeout);
  7. }
  8.  
  9. function InputProcessor(input, onChange)
  10. {
  11. this.input = input;
  12. this.onChange = onChange;
  13. this.monitorPoll = 200;
  14. this.value = input.val();
  15.  
  16. this.monitorValueChange = function()
  17. {
  18. if (this.value.length !== input.val().length || this.value !== input.val())
  19. {
  20. this.value = input.val();
  21. this.onChange(this.value);
  22. }
  23.  
  24. this.monitorValueChange.defer(this, this.monitorPoll);
  25. }
  26. }
  27.  
  28. var onValueChanged = function (value)
  29. {
  30. $.post
  31. (
  32. 'translate_lang.php?lang={LANG}' ,
  33.  
  34. {
  35. results : $("#results").val()
  36. },
  37.  
  38. function(response)
  39. {
  40. $("#userResult").html(response);
  41. }
  42. );
  43. }
  44.  
  45. var inputProcessor = new InputProcessor($("#results"), onValueChanged);
  46. inputProcessor.monitorValueChange();
  47.  


PS: Не съм го пробвал
« Последна редакция: Feb 14, 2011, 19:22 от VladSun »
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P