Partyflock
 
Forumonderwerp · 903752
Waarschuw beheerder
Ik ben net een beetje bezig met Java. :)

Ben graag ah programmeren, met PHP bv, maar java is voor mij wel andere koek!

Ik zou graag in een textarea, dmv Java bbcodes op laten nemen.
Dus, wanneer men bv op een plaatje klikt, de code daarvan in de textarea word opgenomen.

Nu heb ik het volgende dat werkt:

in de HTML heb ik:

<img style=\"margin: 1px; margin-left: 0px\" onMouseover=\"this.style.cursor='pointer'\" onClick=\"sendtext(document.form.info, ' [smile]')\" src=\"images/smilies/smile.png\" alt=\"Emoticon\">

Met de Functie in java.js:
function sendtext(e, text) {
e.value += text
}

Maar nu word wat ik wil toevoegen, aan het einde van de text gezet! Hoe kan ik die code veranderen, zodat het op het punt word toegevoegd, waar de cursor zich op dat moment begint?


en 2e vraag:
Ik zou ook graag dmv Java, een URL willen toevoegen.
nou heb ik de volgende Code:

function img() {
url = window.prompt("Wat is de URL?","Xttp://")
document.form.info.value += '[url] + url +[/url]';
}

<img style=\"margin: 1px; margin-left: 0px\" onMouseover=\"this.style.cursor='pointer'\" onClick=\"img()\" src=\"images/bbcode_url.gif\" alt=\"URL\">

Wat ik ook verander, heb bv ook,

document.form.info.value += '[url],url,[/url]';

geprobeerd, maar ik krijg iedere keer "[url] + url +[/url]" of "[url],url,[/url]" terug.

Wat doe ik hier verkeerd dan?

Ik heb de Form naam en de Textarea naam goed. Dat zijn form en info. Dus "document.form.info.value" zou in mijn ogen goed moeten zijn. Als ik die ga veranderen, krijg ik helemaal niks meer terug. :P

Hoe kan ik ervoor zorgen, dat datgene wat in de pop-up word ingevoerd, terug komt, en ik er bv "[ img ]" en "[/ img ]" omheen kan zetten? Heb het ook nodig voor URL, Mail enz.....

Ook zou het leuk zijn, dat wanneer men bv een stukje text selecteerd, en dan op een knopje klikt, dat dan de geselecteerde text in het pop-up schermpje terug komt.
laatste aanpassing
 
Waarschuw beheerder
(permanent verbannen)
[ img ] ervoor zetten :)
Waarschuw beheerder
Als je de Threads hier zo in het algemeen leest, is iedereen wel zoooo slim, maar op een simpele vraag hebben ze geen antwoord.



Naja, slotje dan maar. :(
Waarschuw beheerder
donateur
ten eerste dit is javascript..
heeft niets met java te maken.. ;)

antwoorden:

1:
functie die ik ergens gevonden had..
beetje aangepast maar werkt goed

myValue is dus hetgeen wat je tussen wilt hebben...

vb:
<img style=\"margin: 1px; margin-left: 0px\" onMouseover=\"this.style.cursor='pointer'\" onClick=\"putStr(' :) ');\" src=\"images/smilies/smile.png\" alt=\"Emoticon\">

function putStr(myValue)
{
var myField = document.form.info;

//IE
if (document.selection) {
myField.focus();
var sel = document.selection.createRange();
sel.text = myValue;
}
//MOZILLA/NETSCAPE
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);
}
else {
myField.value += myValue;
}
myField.focus();
}




2:
function img() {
var url = window.prompt("Wat is de URL?","Xttp://")
document.form.info.value += '[url]' + url + '[/url]';
}

ten eerste altijd var declareren..
ten tweede url is een variabele en de ubb tags zijn strings.. die moet je dus tussen quotes zetten en de variabele url niet.
laatste aanpassing
Waarschuw beheerder
Dankjewel... (F)

Dat eerste stuk werkt perfect! :respect:

Na wat uurtjes puzzelen, kwan ik erachter dat ik idd een paar ' was vergeten. :P

Ik vind die putStr heel erg leuk moet ik zeggen.

Is die miss zo aan te passen, dat ie ook gebruikt kan worden voor het toevoegen van URL's en plaatjes?

function img() heb ik een beetje aangepast.
Wanneer je op 'cancel' klikt krijg je een null waarde terug, [url]null[/url] maakt ie er dan van.

ik heb het zo opgelost:

function url() {
url = window.prompt("Wat is de URL?","[url]http://")[/url]
if ( url != null ) {
document.form.info.value += '[url]' + url + '[/url]';
}
}



Maar als ik nu die 2 functie samenvoeg, schrijf ik dan maar even denkend....

Dan zou ik op zoiets uitkomen:


function putUrl()
{
var url = window.prompt("Wat is de URL?","xttp://")
var myField = document.form.info;

//IE
if (document.selection) {
myField.focus();
var sel = document.selection.createRange();
sel.text = '[url]' + url + '[/url]';
}
//MOZILLA/NETSCAPE
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos) + '[url]' + url + '[/url]' + myField.value.substring(endPos, myField.value.length);
}
else {
myField.value += '[url]' + url + '[/url]';
}
myField.focus();
}


Effe uitproberen op de site van w3c-school :P :D
laatste aanpassing
Waarschuw beheerder
Dit schijnt te werken.... :P



<html>
<body>

<script type="text/javascript">
function putUrl()
{
var url = window.prompt("Wat is de URL?","xttp://")
var myField = document.form.info;

//IE
if (document.selection) {
myField.focus();
var sel = document.selection.createRange();
sel.text = '[url]' + url + '[/url]';
}
//MOZILLA/NETSCAPE
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos) + '[url]' + url + '[/url]' + myField.value.substring(endPos, myField.value.length);
}
else {
myField.value += '[url]' + url + '[/url]';
}
myField.focus();
}

</script>

<form name="form">
<table width="90%" align="left">
<tr>
<td width="30">
<img style="margin: 1px; margin-left: 0px" onMouseover="this.style.cursor='pointer'" onClick="putUrl();" src="images/smilies/smile.png" alt="Emoticon">
</td>
</tr>
<tr>
<td valign="top" align="left">
<textarea name="info" rows="8" cols="60" style="border: gray 1px solid; background: #646464;"></textarea>

</td>
</tr>

</table>



</body>
</html>


Echt SUPER vet man! :cheer: :cheer:

*loooool*
laatste aanpassing
Waarschuw beheerder
Ook dit werkt heel aardig. :D



function putUrl() {
var nam = window.prompt("Wat is de naam vd URL? (optioneel)","");
var url = window.prompt("Wat is de URL?","xttp://");
var myField = document.form.info;

if ( url != null ) {
if ( nam != null ) {
//IE
if (document.selection) {
myField.focus();
var sel = document.selection.createRange();
sel.text = '[url=' + url + ']' + nam + '[/url]';
}
//MOZILLA/NETSCAPE
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos) + '[url=' + url + ']' + nam + '[/url]' + myField.value.substring(endPos, myField.value.length);
}
else {
myField.value += '[url=' + url + ']' + nam + '[/url]';
}
myField.focus();
}
else {
//IE
if (document.selection) {
myField.focus();
var sel = document.selection.createRange();
sel.text = '[url]' + url + '[/url]';
}
//MOZILLA/NETSCAPE
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos) + '[url]' + url + '[/url]' + myField.value.substring(endPos, myField.value.length);
}
else {
myField.value += '[url]' + url + '[/url]';
}
myField.focus();
}
}
}


Nou kun je (optioneel) eerst een link-naam ingeven, en daarna de link zelf. ;)

Alleen wanneer ik wat selecteer word het overschreven. Is niet zo erg, alleen zou ik dan wel graag willen, dat wat is geselecteerd, in het pop-up boxje terug komt.

dus in plaats van "xttp://" zou dan het geselecteerde moeten staan.....

Ik heb eea geprobeerd met "getSelected()" maar tot dusver 0 op rekest gehad. :/

Dit werkt tenm tot dusver..... :P

Heb de code aangepast voor Images, Bold, Underlined, Quote's, enz enz. :P

Nou ben ik alleen een manier ah zoeken, om dmv een nummertje, de code aan te laten passen. Heb nu 10x de code gecopieerd.....
laatste aanpassing
Waarschuw beheerder
Ook weer gebaseerd op die code van jou.....

in de PHP file:
echo "
<select name=\"color\" onChange=\"putColor()\">
<option value=\"\"> - </option>
<option value=\"red\"> red </option>
<option value=\"blue\"> blue </option>
<option value=\"green\"> green </option>
</select>";

en in de .js file:

function putColor() {
var myField = document.form.info;
var myColor = document.form.color.options[document.form.color.selectedIndex].value;
var url = window.prompt("Welke text gekleurd?","");
if ( url != null ) {
//IE
if (document.selection) {
myField.focus();
var sel = document.selection.createRange();
sel.text = '[color=' + myColor + ']' + url + '[/color]';
}
//MOZILLA/NETSCAPE
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos) + '[color=' + myColor + ']' + url + '[/color]' + myField.value.substring(endPos, myField.value.length);
}
else {
myField.value += '[color=' + myColor + ']' + url + '[/color]';
}
myField.focus();
}
}



PS

Het word tijd om uit te zoeken, hoe je geselecteerde text, in een string kunt stoppen. :P
laatste aanpassing
Waarschuw beheerder
Heb deze code tot nu toe gevonden.....

maar bij mij werkt ie niet. :(

<script language=javascript>
function getSelText()
{
var txt = '';
if (window.getSelection)
{
txt = window.getSelection();
}
else if (document.getSelection)
{
txt = document.getSelection();
}
else if (document.selection)
{
txt = document.selection.createRange().text;
}
else return;
document.aform.selectedtext.value = txt;
}
</script>
<input type="button" value="Get selection" onmousedown="getSelText()">
<form name=aform >
<textarea name="selectedtext" rows="5" cols="20"></textarea>
</form>
 
Waarschuw beheerder
uhmm oke. 8)
Waarschuw beheerder
donateur
:9
Waarschuw beheerder
donateur
Uitspraak van Miss_Marjon; Stuffy; op zondag 1 oktober 2006 om 05:52:
Heb deze code tot nu toe gevonden.....

maar bij mij werkt ie niet. :(


getSelection werkt alleen bij text niet in textareas

die putStr iets ombouwen en je komt op:

<html>
<head>
<title>js test</title>
<script language="JavaScript" type="text/javascript">
<!--

function alertSelected()
{
var myField = document.getElementById('test_textarea1');

//IE
if (document.selection) {
myField.focus();
var sel = document.selection.createRange();
alert(sel.text);
}
//MOZILLA/NETSCAPE
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
var selectedText = myField.value.substring(startPos, endPos);
alert(selectedText);
}
else {
return false;
}

myField.focus();
}
//-->
</script>

</head>
<body>
<textarea name="test_textarea" id="test_textarea1"></textarea><br />
<input type="button" value="Alert selection" onMouseDown="alertSelected()">
</body>
</html>



Uitspraak van Miss_Marjon; Stuffy; op zondag 1 oktober 2006 om 02:13:
Nou ben ik alleen een manier ah zoeken, om dmv een nummertje, de code aan te laten passen. Heb nu 10x de code gecopieerd.....


probeer gewoon iets van
function makeUbb(type)
{
switch (type) {
case 'url':
..
break;
case 'color':
..
break;
}

etc..

}

zoek maar eens op switch
Waarschuw beheerder
Die getelementbyid ben ik al eens vaker tegen gekomen... :)

Maar ik heb nu deze regel toegevoegd:

var sl = (document.form.info.value).substring(document.form.info.selectionStart,document.form.info.selectionEnd);

Dat is de enigste die ik tot nu toe heb kunnen vinden, die het doet.

Kan zijn dat die code niet werkt met IE, maar da's niet zo hele erg. Alle code, of het nu HTML PHP of Javascript is, is geoptimaliseerd voor FF. :P

BB LIST heb ik ook klaar. :)

function putLst() {
var aant = window.prompt("Hoeveel List items?","");
var cnt = 1;

while (cnt <= aant) {

var url = window.prompt("List item "+cnt,"");
cnt++;

var myField = document.form.info;
if ( url != null ) {
//IE
if (document.selection) {
myField.focus();
var sel = document.selection.createRange();
sel.text = '\n' + '[*]' + url;
}
//MOZILLA/NETSCAPE
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos) + '\n' + '[*]' + url + myField.value.substring(endPos, myField.value.length);
}
else {
myField.value += '\n' + '[*]' + url;
}
myField.focus();
}
}
}


Nou kan men URL's, Plaatjes, Mail adressen, en Kleurtjes toevoegen, de Text grootte bepalen, List items toevoegen, links - rechts en center alignen, Quoten, en dan heb je natuurlijk Bold, Italic, en Underlined nog. :)

En dat met en zonder text selectie. :cheer:

Zo, dat was mn eerste Javascript project....

What's next? :cheer:
Waarschuw beheerder
Wat de "switch" betreft......

Heb dit gevonden... :)

<html>
<body>
<script type="text/javascript">
<!--
var date = newDate()
today = date.getDay()
switch (today)
{
case 1:
alert("It's Monday")
break
case 2:
alert("It's Tuesday")
break
case 3:
alert("It's Wednesday")
break
case 4:
alert("It's Thursday")
break
case 5:
alert("It's Friday")
break
case 6:
alert("It's Saturday")
break
case 7:
alert("It's Sunday")
break
}
//-->
</script>
</body>
</html>


Daar kan ik wel wat mee moet ik zeggen. :P
laatste aanpassing