Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: NikolaiTalev в Feb 14, 2011, 12:30



Титла: Помощ за създаване на JS код
Публикувано от: NikolaiTalev в Feb 14, 2011, 12:30
Здравейте 
имам текстово поле от което извеждам с keyup и проблема идва от там че когато се пейстне нещо с мишката трябва да се натисне и клавиш за да изведе съдържанието и затова искам да попитам как може да се направи когато се натисне Paste с десния бутон на мишката да добавя space от клавиатурата
Или ако има друг начин ще се радвам да го споделите  :)


Титла: Re: Помощ за създаване на JS код
Публикувано от: VladSun в Feb 14, 2011, 13:46
Най-лесно би било да се следи за промяна на стойността на полето - прим. на всеки 200ms се проверява за промяна в стойността и ако има такава се извиква функцията ти.


Титла: Re: Помощ за създаване на JS код
Публикувано от: NikolaiTalev в 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.  


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

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


Титла: Re: Помощ за създаване на JS код
Публикувано от: NikolaiTalev в 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 :)


Титла: Re: Помощ за създаване на JS код
Публикувано от: VladSun в Feb 14, 2011, 15:28
Не се получава  ???

Кое?!?

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

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

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


Титла: Re: Помощ за създаване на JS код
Публикувано от: ivo3d в Feb 14, 2011, 15:33
А защо ползваш keyup, change не ти ли върши работа? Това събитие се извиква при всяка промяна на полето, независимо дали си изполвал клавиатурата или мишката.


Титла: Re: Помощ за създаване на JS код
Публикувано от: VladSun в Feb 14, 2011, 15:37
onchange се вика при преместване на фокуса само.


Титла: Re: Помощ за създаване на JS код
Публикувано от: ivo3d в Feb 14, 2011, 16:47
Ами в зависимост от случая може и да му свърши работа. Ако е примерно някаква валидация, що да не? А при autocomplete мисля, че и само кeyup върши работа.

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


Титла: Re: Помощ за създаване на JS код
Публикувано от: NikolaiTalev в Feb 14, 2011, 17:55
Значи са сега остава варианта на слуша на 200мс ,но може ли да се направи когато се кликне с мишката тогава да слуша ,а иначе да си е с keyup


Титла: Re: Помощ за създаване на JS код
Публикувано от: VladSun в Feb 14, 2011, 18:17
И защо да си усложняваш живота? Би трябвало да решаваш проблем едва след като се я появил :)
Викането на подобна проста функция на всеки 200ms изобщо не натоварва.


Титла: Re: Помощ за създаване на JS код
Публикувано от: NikolaiTalev в Feb 14, 2011, 18:27
Да но не мога да я накарам да заработи не знам защо така ???

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

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


Титла: Re: Помощ за създаване на JS код
Публикувано от: VladSun в Feb 14, 2011, 18:33
Ако само това правип, няма как да стане :) Аз само ти написах пример за периодично викане на функция.
Там къде пише //code here трябва да си добавиш твoя код - проверка за промяна, код при възникване на промяна и т.н.


Титла: Re: Помощ за създаване на JS код
Публикувано от: NikolaiTalev в 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.  
След това пробвах  още няколко варианта  ::)


Титла: Re: Помощ за създаване на JS код
Публикувано от: VladSun в 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: Не съм го пробвал


Титла: Re: Помощ за създаване на JS код
Публикувано от: NikolaiTalev в Feb 14, 2011, 19:27
Аз не съм и твърдял обратното с js за първи път ми се налага да правя нещо което го няма готово  :)
А относно програмирането програмирам на Асемблер и C и от няколко месеца и PHP но от JavaScript и понятие нямам :)

Кода не работи не извежда нищо :(

П.П Мерси за помоща


Титла: Re: Помощ за създаване на JS код
Публикувано от: VladSun в Feb 14, 2011, 19:46
Ех ...Работи си - само трябва да го сложиш в
Код
GeSHi (Javascript):
  1. $(document).ready(function() { .... });
блока.


Титла: Re: Помощ за създаване на JS код
Публикувано от: NikolaiTalev в Feb 14, 2011, 19:56
Много ти благодаря за отделеното време  :)

П.П Както си го направил работи навсякъде и под Opera работи