Титла: Проблем с JavaScript код
Публикувано от: NikolaiTalev в Jan 11, 2011, 10:25
Здравейте снощи цяла вечер си блъсках главата с тоя код и не мога да разбера защо не се получава ??? GeSHi (Javascript): <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=udF-8"> <title>...</title> <style type="text/css"> </style> <script language="javascript" type="text/javascript"> function limitText(key, limitField, limitCount, limitNum) { if (key == 32 || key == 13){ alert("You just pressed a key");}//tuka trqbva da restartira funciqta else{ if (limitField.value.length > limitNum) { limitField.value = limitField.value.substring(0, limitNum); } else { limitCount.value = limitNum - limitField.value.length; } } } </script> </head> <body> <form name="myform"> <textarea name="limitedtextarea" onKeyPress="limitText(window.event.keyCode);" onKeyDown="limitText(this.form.limitedtextarea,this.form.countdown,10);" onKeyUp="limitText(this.form.limitedtextarea,this.form.countdown,10);"> </textarea><br> <font size="1">(Maximum characters: 10)<br> You have <input readonly type="text" name="countdown" size="3" value="10"> characters left.</font> </form> </body> </html>
Така засича space end enter Проблема е че ако key най- отпред (function limitText(key, limitField, limitCount, limitNum) ) изважда аррлета т.е засича space-a, но тогава не работи останалата част (проверката за дължината) П.П Идеята е следната искам да огранича дължината на въведената дума, тоест докато се въвежда текста примерно съм задал 40 символа в момента който се натисне space || enter да започва от начало (тоест да брои символите на всяка дума) Edit: alert("You just pressed a key"); алерта съм го сложил само с цел визуализация за натискането на клавиш enter || space иначе там трябва да рестартира функцията limitText
Титла: Re: Проблем с JavaScript код
Публикувано от: neter в Jan 11, 2011, 12:12
Зарежи го чистия javascript - само ще си навлечеш главоболия. Пример, "window.event" го няма във Firefox (и много други браузъри). Трябва да изписваш алтернативи според браузъра, което е куцо. Препоръчвам ти да почнеш да четеш за jQuery (ако мислиш да се занимаваш с javascript и в бъдеще). По твоя проблем. Ето пример как може да стане с jQuery GeSHi (HTML): <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=udF-8"> <font size="1">(Maximum characters: 10) <br> You have <span class="countdown"></span> characters left. </font><script type="text/javascript"> $("#limitedtextarea").textlimit("span.countdown",10,-1);
Това ($2) е сайтът на jQuery, откъдето можеш да си дръпнеш библиотеката на jQuery, която вмъкваме в head-a. Това ($2) е страничката, откъдето можеш да си дръпнеш плъгина Text Limit за jQuery, който също можеш да забележиш вмъкнат в head-a. Javascript-ът в дъното на кода говори сам за себе си в jQuery синтаксис. Само ще ти кажа, че "-1" указва потребителят да не вижда изпълнението на ограничението, когато в полето е поставен текст, по-дълъг от ограничението. Ако искаш изрязването на текста да се вижда, замени "-1" със скоростта на изрязване в милисекунди (например 100). При така вече направен добър ограничител на текста, обясни по-добре какво трябва да се случва при натискане на интервал или Enter, за какво са тези alert-и и т.н.
Титла: Re: Проблем с JavaScript код
Публикувано от: bvbfan в Jan 11, 2011, 12:34
onKeyDown="limitText(this.form.limitedtextarea,this.form.countdown,10); function limitText(key, limitField, limitCount, limitNum) Викаш функция, която приема 4 параметъра, а я викаш с 3, което обърква цялата логика и скрипта не се изпълнява, заради недефинирани символи. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=udF-8"> <title>...</title> <style type="text/css"> </style> <script language="javascript" type="text/javascript"> function limitText(key, limitCount, limitNum) { if (key.value.length >= limitNum) { key.value = key.value.substring(0, limitNum); } limitCount.value = limitNum - key.value.length; } </script> </head> <body> <form name="myform"> <textarea name="limitedtextarea" onKeyUp="limitText(this.form.limitedtextarea,this.form.countdown,10);" onKeyPress="limitText(this.form.limitedtextarea,this.form.countdown,10);"> </textarea><br> <font size="1">(Maximum characters: 10)<br> You have <input readonly type="text" name="countdown" size="3" value="10"> characters left.</font> </form> </body> </html>
Разгледай този код, не съм javascript програмист, може да написано невярно, но в Лисицата работи.
Титла: Re: Проблем с JavaScript код
Публикувано от: NikolaiTalev в Jan 11, 2011, 13:53
Зарежи го чистия javascript - само ще си навлечеш главоболия. Пример, "window.event" го няма във Firefox (и много други браузъри). Трябва да изписваш алтернативи според браузъра, което е куцо. Препоръчвам ти да почнеш да четеш за jQuery (ако мислиш да се занимаваш с javascript и в бъдеще). По твоя проблем. Ето пример как може да стане с jQuery
GeSHi (HTML): <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=udF-8"> <font size="1">(Maximum characters: 10) <br> You have <span class="countdown"></span> characters left. </font><script type="text/javascript"> $("#limitedtextarea").textlimit("span.countdown",10,-1);
Това ($2) е сайтът на jQuery, откъдето можеш да си дръпнеш библиотеката на jQuery, която вмъкваме в head-a. Това ($2) е страничката, откъдето можеш да си дръпнеш плъгина Text Limit за jQuery, който също можеш да забележиш вмъкнат в head-a. Javascript-ът в дъното на кода говори сам за себе си в jQuery синтаксис. Само ще ти кажа, че "-1" указва потребителят да не вижда изпълнението на ограничението, когато в полето е поставен текст, по-дълъг от ограничението. Ако искаш изрязването на текста да се вижда, замени "-1" със скоростта на изрязване в милисекунди (например 100). При така вече направен добър ограничител на текста, обясни по-добре какво трябва да се случва при натискане на интервал или Enter, за какво са тези alert-и и т.н.
@neter благодаря ти много , искам докато потребителя въвежда текста при всяко натискане на space or enter да започва да брои от начало (тоест искам да определя максималната дължина на една дума )
Титла: Re: Проблем с JavaScript код
Публикувано от: bvbfan в Jan 11, 2011, 15:10
GeSHi (HTML): <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=udF-8"> <script language="javascript" type="text/javascript"> function limitText(e, key, limitCount, limitNum) { if( e.which == 32 || e.which == 13 ) { key.value = ""; } else if (key.value.length >= limitNum) { key.value = key.value.substring(0, limitNum); } limitCount.value = limitNum - key.value.length; } <textarea name="limitedtextarea" onKeyPress="limitText(event,this.form.limitedtextarea,this.form.countdown,10);" onKeyUp="limitText(event,this.form.limitedtextarea,this.form.countdown,10);"> <font size="1">(Maximum characters: 10) <br> You have <input readonly type="text" name="countdown" size="3" value="10"> characters left. </font>
Титла: Re: Проблем с JavaScript код
Публикувано от: NikolaiTalev в Jan 11, 2011, 15:58
GeSHi (HTML): <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=udF-8"> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <body onKeyPress="doKey(window.event.keyCode);"> <font size="1">(Maximum characters: 100) <br> You have <span class="countdown"></span> characters left. </font><script type="text/javascript"> function doKey(key) { if (key == 32 || key == 13){ $("#limitedtextarea").textlimit("span.countdown",50,-1);}//тук трябва да рестартирам брояча else {$("#limitedtextarea").textlimit("span.countdown",50,-1);} }
@neter как мога да рестартирам брояча тоест пиша .... и като натисна ентер или спейс да почва пак от 50символа
Титла: Re: Проблем с JavaScript код
Публикувано от: neter в Jan 11, 2011, 17:01
Извинявай за забавянето, трябва и да се работи :) За целите на твоето упражнение може да окастрим и променим кода на плъгина Text Limit на jQuery така: GeSHi (Javascript): jQuery.fn.textlimit=function(counter_el, thelimit) { var that = this[0]; updateCounter(); function updateCounter(){ words = that.value.split(/[\s]+/); var wordCharCount = words[words.length-1].length; jQuery(counter_el).text(thelimit - wordCharCount); }; this.keyup (function(e){ updateCounter(); for (i=0;i<words.length;i++) { if( words[i].length > thelimit ){ this.value = this.value.replace(words[i], words[i].substr(0,thelimit)); } } updateCounter(); }); };
HTML-ът си остава такъв, какъвто ти го показах в по-горния ми пост, като само махни третия параметър от функцията textlimit ;) P.S.: Броячът под textarea-та ще показва оставащите символи за последната дума в текста. Надявам се да ти върши работа така, тъй като за момента не ми хрумва как ще стане логиката да показваме броя на текущо редактираната дума от текста (може да не е последната). Но пък току виж ми хрумнало :)
Титла: Re: Проблем с JavaScript код
Публикувано от: NikolaiTalev в Jan 11, 2011, 17:13
Мерси много получаваш цяла каса виртуална бира [_]3 Не съм спал снощи да го мисля ама явно ще трябва да попрочета някое букварче за jQuery. Аз попринцип на php пиша и до сега не ми се е налагало да си пиша js за каквото ми е трябвало сам намирал готов. Сега ми остана само с php да направя проверката ако е изключен js да не записва в база даните (за да не заобиколи някой проверката )
|