Din kod funkar bara i IE, och jag är osäker på vad den faktiskt gör, så jag tog mig friheten att skriva ny kod, som förhoppningsvis gör det du vill och lite till.
När du trycker på en av köp-knapparna kollas först att man skrivit in ett giltigt antal. Sedan letar koden upp rätt rad i textboxen och petar in rätt antal böcker. Om boken redan finns i listan ersätts den med rätt antal. Skriver man noll tas oken bort ur listan. Allt som kan tänkas stå sist på raden bevaras, så man kan lämna kommentarer för varje bok.
Koden bör funka i "alla" webbläsare.
Notera dock att koden i knapparna är lite annorlunda, varje knapp måste skickaa med rätt name-attribut för motsvarande antalsruta. Dessutom tog jag bort return, då det är helt onödigt för button-knappar. (Till skillnad från submit-knappar och länkar)
Om det inte funkar som du vill, känn dig fri att klaga. :)
<script type="text/javascript">
function OrderForm(bookTitle, numName) {
var mObj = document.getElementsByName('message')[0];
var numBooks = document.getElementsByName(numName)[0].value;
// En gegga av tecken som kollar om värdet är numeriskt.
if (!/^\d*$/.test(numBooks)){
alert('Vänligen ange ett giltigt antal böcker för ' + bookTitle + '!');
return;
}
// Hämta värdet i message och dela upp det i rader
var message = mObj.value.split(/\n+/g);
// Gå igenom varje rad
for(var i = 0; i<message.length; i++){
var row = message[i]; // Plocka ut en rad
// Kolla om raden matchar med den boken vi letar efter
if(row.indexOf(bookTitle)==0){
// Om användaren har angivit noll böcker eller lämnat rutan tom...
if (numBooks<1){
message[i] = ''; // Ta bort boken (Blankraden tas hand om i nästa sats)
// Sätt ihop hela textmassan och spara
mObj.value = message.join('\n').replace(/\n+/, '\n').replace(/^\n*/, '');
return; // Hittades boken är vi klara och kan smita ut bakvägen
}else{
// Användaren har angivit ett nummer större än noll
var restOfLine = row.substr(bookTitle.length); // Resten av raden
// Här gör vi det jobbigt för oss och bevarar vad som kan råka
// stå efter antalet, så man kan lämna kommentarer
restOfLine = restOfLine.replace(/^\s*-*\s*\d+st\s*/, '');
// Bygg ihop raden igen
message[i] = bookTitle + ' - '+ numBooks + 'st ' + restOfLine;
// Sätt ihop hela textmassan och spara
mObj.value = message.join('\n').replace(/\n+/, '\n').replace(/^\n*/, '');
return; // Hittades boken är vi klara och kan smita ut bakvägen
}
}
}
message.push(bookTitle + ' - '+ numBooks + 'st'); // Lägg till boken
// Sätt ihop hela textmassan och spara
mObj.value = message.join('\n').replace(/\n+/, '\n').replace(/^\n*/, '');
}
</script>
<form name="vbform">
<input type="text" name="antal1" value="1"> <input type="button" value=" KÖP bok 1 " class="Button" onclick="OrderForm('Bok namn 1', 'antal1'); "><br />
<input type="text" name="antal2" value="1"> <input type="button" value=" KÖP bok 2 " class="Button" onclick="OrderForm('Bok namn 2', 'antal2'); "><br />
<input type="text" name="antal3" value="1"> <input type="button" value=" KÖP bok 3 " class="Button" onclick="OrderForm('Bok namn 3', 'antal3'); "><br />
<textarea cols="20" rows="5" name="message"></textarea>
</form>

