var reg = /(.)\1\1/;
if (reg.test(str))
alert("Men hallå");
Kan man göra så att det kommer upp en ruta när man trycker på submitknappen när en textarea innehåller samma tecken minst 3 ggr i rad?
15 svar · 475 visningar · startad av ampy
Kan man göra så att det kommer upp en ruta när man trycker på submitknappen när en textarea innehåller samma tecken minst 3 ggr i rad?
var reg = /(.)\1\1/;
if (reg.test(str))
alert("Men hallå");
Vilket är textareans namn, vart ska jag skriva det i den koden?
Validera
Testa det här.
<HTML>
<HEAD>
<TITLE></TITLE>
<SCRIPT LANGUAGE="JavaScript">
function validera(str){
var reg = /(.)\1\1/;
if (reg.test(str)){
alert("Men hallå");
return false;
}else{
return true;
}
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="formen" METHOD="post" onSubmit="return validera(document.formen.arean.value);" ACTION="dinsida.php">
<TEXTAREA NAME="arean" COLS="10" ROWS="8"></TEXTAREA>
<BR>
<INPUT TYPE="submit" VALUE="send">
</FORM>
</BODY>
</HTML>
//Broskan
onsubmit="if(check(this)){ if(submitted){alert('Skicka bara en gång'); return false;}else{submitted=true; return true;}}else{ return false; }"
Hur ska man lägga in denna kod i koden ovanför?
onSubmit="return validera(document.form.text.value);"
Ingen som vet?
Kan det inte vara läge att slå ihop denna funktion med din check() funktion?
Bara en tanke.
<script language="javascript">
function trim(){
return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.trim=trim;
function validera(str){
var reg = /(.)\1\1/;
}
function check(formobj){
if(formobj.text.value.length==0){
alert('Du har inte skrivit något.');
return false;
} else if (formobj.text.value.trim().length < 15) {
alert('Meddelandet måste vara mer än 15 tecken.');
return false;
} else if (formobj.text.value.validera) {
alert('Meddelandet är ogiltigt.');
return false;
} else {
return true;
}
}
</script>
Den sista elseif fungerar inte, varför?
regExp?
Men du har ju strippat sönder den RegExp som du fick av spango.
var reg = /(.)\1\1/;
if (reg.test(str))
alert("Men hallå");
Du kör ju ingen test på din sträng som du inte ens skickar med som argument.
Titta på det som jag skrev tidigare och bygg vidare på det.
//Broskan
Validering
Testa det här.
<HTML>
<HEAD>
<TITLE></TITLE>
<STYLE>
</STYLE>
<SCRIPT LANGUAGE="JavaScript">
function validera(str){
if(str.length == 0){
alert('Du har inte skrivit något.');
return false;
}else{
str = str.replace(/^\s+|\s+$/g,"");
reg = /(.)\1\1/;
if(str.length < 15){
alert('Meddelandet måste vara mer än 15 tecken.');
return false;
}else if(reg.test(str)){
alert('Meddelandet är ogiltigt.');
return false;
}else{
return true;
}
}
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="formen" METHOD="post" onSubmit="return validera(document.formen.arean.value);" ACTION="dinsida.php">
<TEXTAREA NAME="arean" COLS="20" ROWS="4"></TEXTAREA>
<BR>
<INPUT TYPE="submit" VALUE="send">
</FORM>
</BODY>
</HTML>
//Broskan
Nu när jag skriver så här:
onsubmit="if(return validera(document.form.text.value)) { if(submitted){alert('Skicka bara en gång'); return false;}else{submitted=true; return true;}}else{ return false; }"
Får jag syntaxfel på koden, varför?
Ingen som vet felet?
Prova att plocka bort return i din if. Den känns lite malplacerad.
Nu fungerar det :e
denna tillåter över 3 men om man skriver en adress, tex https://www.blabla.com så varnar den, därför vill jag byta till fyra
denna tillåter 4 och högre:
reg = /(.)\1\1/;
men jag vill tillåta 3 och högre
eller kan man göra ett undantag för www?
Det finns lite olika sätt...
[blue][i]// släpp bara igenom WWW[/i][/blue]
reg = /([^w])\1\1/i;
[blue][i]// förbjud fyra tecken i rad[/i][/blue]
reg = /(.)\1\1\1/;
Punkten betyder "vilket tecken som helst", och \1 betyder "det som är i den första parantesen".
[^w] betyder "alla tecken förutom w", du kan även lägga till tecken så att exempelvis PPP accepteras: [^wp]
Och så kan du tillåta flera blanktecken i rad: [^wp\s] (\s motsvarar mellanslag, tabb och radbrytning)