Submit aktivieren wenn radiobutton markiert ist ...

Hallihallo,

Ich möchte gern verhindern, dass im Formular aus Spass herumgeklickt bzw abgesendet wird, ohne etwas zu markieren bzw auszuwählen ...
Mals abgesehen von den Prüfscripten möchte ich diese erst gar nicht nutzen, sondern in diesem konkreten Beispiel (votingscript) muss ein radio gewählt werden - klaro! Wie kann ich den Submitbutton solange deaktivieren bis eine Option ausgewählt ist.
Wenn ich schon mal dabei bin, würde ich anschliesend natürlich auch gleich den Button wieder deaktivieren, um Klickabhängige von Ihrer Sucht zu kurieren ...

RMD ;-)
 
Hallo,

versuch mal:
Code:
<html>
<head>
  <script type="text/javascript">
  function enable(){
    document.formular.submit.disabled = false;
  }
  </script>
</head>
<body onLoad="document.formular.submit.disabled = true">
  <form name="formular">
    <input type="radio" name="radio1" onchange="enable()"/>
    <input type="radio" name="radio1" onchange="enable()"/>
    <input type="radio" name="radio1" onchange="enable()"/>
    <input type="radio" name="radio1" onchange="enable()"/>
    
    <input type="submit" name="submit" />
  </form>
</body>
</html>

bye
 
Hallo und Danke fürs erste, Hauptproblem damit geklärt, jedoch ist das Ganze nicht so funktionell, wie ichs mir vorstelle ...

der Button ist deaktiviert - okay,

klicke ich jetzt einen radio an, bleibt der submit immer noch disabled und er wird erst beim Anklicken aktiv, was er ja aber sofort nach Aktivieren des Radiobuttons sein solllte! Woher soll sonst ein unerfahrener User wissen, dass er jetzt anklicken darf ...?
Und zudem ist nach dem Abschicken der Button weiter aktiv ...

Noch ne Lösung?
 
Hallo,

Hmmm sorry, kann ich nicht ganz nachvollziehen. Sobald ich auf einen Radio Buttom clicke ist der Submit sofort aktiv - nicht erst später. Sobald ich das Forumlar abschicke ist er bei mir auch wieder deaktiviert....

bye
 
... habe onchange in onclick geändert, damit funktioniert die sofortige Aktivierung des Buttons ...

muss jetzt noch die disabled-Funktion hinkriegen, soll also heissen, den Button wieder zu deaktivieren, sobald das Formular abgesendet wurde, vielleicht mit 500ms Verzögerung, um dem Script "Zeit zugeben", alles erstmal wegzuschicken! Oder ?


UUps da hast du wohl schon mittendrin geantwortet ...
naja keine ahnung warum das so bei mir nicht geht ... Vieleicht liegt es daran, dass das Formularscript über eine required php-datei in die eigentliche Seite eingebettet wird, somit muss ich das Javascript in die Hauptseite reinschreiben und die Formularangaben in die php-Funktionsdatei ...

Wie gesagt mit Onclick gehts, was jetzt noch fehlt ist halt die anschliessende deaktivierung ...
Hab mir das obige nochmal angeguggt und kann auch nicht erkennen, wo das ausgelöst wird, bei Submit den Button wieder zu aktivieren ...?
 
Zuletzt bearbeitet:
HAllo nachmal,

versuch mal follgende alternatve:
Code:
<html>
<head>
  <script type="text/javascript">
  function enable(){
    document.formular.submit.disabled = false;
  }
  </script>
</head>
<body>
  <form name="formular" onSubmit="document.formular.submit.disabled = true; return true;">
    <input type="radio" name="radio1" onclick="enable()"/>
    <input type="radio" name="radio1" onclick="enable()"/>
    <input type="radio" name="radio1" onclick="enable()"/>
    <input type="radio" name="radio1" onclick="enable()"/>
    
    <input type="submit" name="submit" disabled />
  </form>
</body>
</html>

sollte funktionierten


bye
 
Na danke soweit, das klappt schon mal ganz gut - ahnte ich doch, dass da die disabled-anweisung irgendwo noch fehlte ;-) Jetzd das berühmte AAABER! ;-)

Das disablen des Buttons wird aber wieder aufgehoben, sobald man wieder einen Radiobutton anklickt, das ist ja dann auch nicht gerade das Gelbe vom Frühstücksei ... also irgendwie müsste man da nochwas deaktivieren ... So siehts bisher aus:
Code:
<html>
<head>
<title></title>
  <script type="text/javascript">
  function enable(){
    document.umfrage.submit.disabled = false;
  }
  </script>
</head>
<body> 
<table border="0" cellpadding="0" cellspacing="2" width="160">
<form name="umfrage" action="" method="post" target="m2" onSubmit="document.umfrage.submit.disabled = true; return true;">
<input type="radio" name="option" value="1" onclick="enable()">bla
<input type="radio" name="option" value="2" onclick="enable()">bsld
<input type="radio" name="option" value="3" onclick="enable()">bbjh
<input type="submit" value="Stimme abgeben" disabled="disabled">
</form>
</body>
</html>

An welcher stelle müsste ich das noch mit einbauen:
Code:
document.umfrage.submit.value='Du hast abgestimmt'
also das der deaktivierte Button dann einen anderen Text bekommt ..

Grüße RMD
 
Ich glaub wir reden die ganze Zeit aneinader vorbei
muss ein radio gewählt werden - klaro! Wie kann ich den Submitbutton solange deaktivieren bis eine Option ausgewählt ist. Wenn ich schon mal dabei bin, würde ich anschliesend natürlich auch gleich den Button wieder deaktivieren
das heißt für mich :
1) Deaktiviert
2) Radio anktivieren
3) Abschicken
4) Deaktivieren

nach deinem letzten Post denke ich aber du möchtest

1) Deaktiviert
2) Radio anktivieren
3) Abschicken
4) Label ändern
5) "für immer" Deaktivieren

Um das wirklich sicher zu machen, solltest du mit der IP (mit PHP) arbeiten oder mit Cookies arbeiten. Ein Beispiel mit Cookies folgt:

Code:
<html>
<head>
<script type="text/javascript">
<!--
var done=0;

function cookie_setzen()
{
  document.cookie = "vote=done";
  alert("cookie wurde gesetzt");
}


function cookie_lesen()
{
  if(document.cookie){
    var cookie = document.cookie;
    var begin = cookie.indexOf('=');
    var length = cookie.lenght;
    cookie = cookie.substring(begin+1,length);
    document.umfrage.submit.disabled = true;
    document.umfrage.submit.value = 'Du hast abgestimmt';
    done=1;
  }else{
    document.umfrage.submit.value = 'Stimme abgeben';
  }
}


function enable(){
  if(done==0){
    document.umfrage.submit.disabled = false;
  }
}


</script>
</head>

<body onLoad="cookie_lesen()">

<table border="0" cellpadding="0" cellspacing="2" width="160">
<form name="umfrage" action="" method="post" target="m2" 
onSubmit="document.umfrage.submit.disabled = true; cookie_setzen(); return true;">
<input type="radio" name="option" value="1" onclick="enable()">bla
<input type="radio" name="option" value="2" onclick="enable()">bsld
<input type="radio" name="option" value="3" onclick="enable()">bbjh
<input type="submit" value="Stimme abgeben" name="submit" disabled="disabled">
</form>
</body>
</html>

ciao - hoffe das wir nicht wieder aneinander vorbei geschrieben haben...
 
Eine schöne Woche erstmal ;-)
Naja so ganz "aneinander vorbei" wars ja nicht ;-) Ist ja schon was bei rausgekommen ...
Ich muss zugeben, dass ich da bissl blueäugig rangegangen bin und gedacht habe, dass man meine "Wünsche" unabhängig (vom eigentlichen Script) realisieren kann, aber du hast mich durchschaut;-) nee mal im Ernst: Du hast natürlich Recht, dass es darum geht den User daran zu hindern mehrere Stimmen abzugeben und den anhand der IP oder cookie zu identifizieren - daher sollte der Button natürlich für eine Zeit gesperrt sein. Also das ganze ist ja so, dass es dafür ja im Hintergrund schon ein PHP-Code gibt, der die Values und IP's ausliest - variable in der config.inc:
PHP:
$tab_pip    =$tabpref."user_ip";      //Letzte IP / Vote
, die in die DB eingetragen wird. Der PHP- Abschnitt des Votingscript und "unseren " bisherigen Änderungen am Formular sieht per PHP so aus: ;-)
PHP:
if ($pfpoll["$cookiename-$poll[id]"] != 1) {

echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"2\" width=\"$pollbreite\">
      <form name=\"umfrage\" action=\"$ppollurl/vote.php?id=$poll[id]\" method=post target=\"$ptoframe\" onSubmit=\"document.umfrage.submit.disabled = true; return true;\">
      <input type=hidden name=redirect value=\"$PHP_SELF\">
      <tr><td class=\"infomini\" colspan=\"2\">$poll[frage]</td></tr>";

$sqlbefehl= "Select * FROM $tab_pdata where pollid=$poll[id] order by auswahl";
$getoptions  = mysql_query($sqlbefehl, $serverid);

while ($options= mysql_fetch_array($getoptions)) {
if ($tdclass == "odd") { $tdclass="even"; }
else  { $tdclass="odd"; }

   echo "<tr><td class=\"$tdclass\"><input type=radio name=option value=\"$options[id]\" onclick=\"enable()\"></td><td class=\"$tdclass\">$options[auswahl]</td></tr>";

}

echo "<tr><td class=\"abstimmen\" colspan=\"2\" align=\"center\"><input style='font-size:9px' type=\"submit\" name=\"submit\" value=\"Stimme abgeben\" disabled=\"disabled\"></td></tr></form></table>";

}

else .... Ergebnisse ....
In der Standard-Scriptfassung ist diese Klicksperre nur mit einem labidaren TextHinweis im Targetframe ( "du hast schon gevotet...") gelöst, was mir eben zu simple ist ...
Man möchte ja immer irgendwie das etwas andere Formular, daher fiel mir das noch mit der Labeländerung ein ...

Sorry, wenn ich da gedacht habe, dass es einfacher geht - ich wollte es ja nicht unbedingt schwieriger machen, dachte ich als Scriptdummy zumindest ...

Gruß RMD

Anmerkung: mir fällt hier im Forum immer wieder sehr unangenehm auf, dass ich trotz 1024x768 Px beim Lesen und schreiben von Posts fast die Hälfte zusätzlich horizontal scrollen muss, das nervt wahnsinnig, woran liegt das?
 
Zuletzt bearbeitet:
Original geschrieben von RonneldMcDonald
Eine schöne Woche erstmal ;-)
(...)
Man möchte ja immer irgendwie das etwas andere Formular, daher fiel mir das noch mit der Labeländerung ein ...

Sorry, wenn ich da gedacht habe, dass es einfacher geht - ich wollte es ja nicht unbedingt schwieriger machen, dachte ich als Scriptdummy zumindest ...

Gruß RMD

Anmerkung: mir fällt hier im Forum immer wieder sehr unangenehm auf, dass ich trotz 1024x768 Px beim Lesen und schreiben von Posts fast die Hälfte zusätzlich horizontal scrollen muss, das nervt wahnsinnig, woran liegt das?
Auch dir eine schöne Woche :)
Das wichtigste zuerst: Funktionierts jetzt so wie du wolltest?
Zum Srolling: das liegt an den [ code ] bzw [ php ] tags. Diese Tags verhindern u.a. den Zeilen umbruch was das ganze ziemlich unleserlich macht. Also bei langen Codezeilen am besten selbst einen Umbruch einbauen, oder auf die beiden tags verzichten.

bye
 

Neue Beiträge

Zurück