2016-09-12 1 views
1

Ich versuche, Textwerte an das andere Python-Programm zu senden, basierend auf Benutzerauswahl (über Radiobutton). Programm funktioniert gut mit EinzelformularaktionKonnte keine Werte in das Programm schreiben

<form action='/cgi-bin/prog1.py' method='POST'> 
    ...text input1 
    ...text input2 
    ...submit 

</form> 

aber wenn Optionsschaltfläche Textwerte nicht in das Programm gebucht werden. Hier

ist der Code, den ich versucht

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <script type="text/javascript"> 
    function whichsite(form){ 
    var sites = form.elements.site, i = sites.length; 
    while (--i > -1){ 
    if(sites[i].checked){ 
     return sites[i].value; 
     } 
    } 
    } 
    </script> 
</head> 
<body> 
    <form action="#" onsubmit="window.open(whichsite(this)); return false; method='POST' "> 
    <b>Program Jump</b> 
    <p> 
    Enter PDB ID:<input type="text" name="PDB_ID"><br> 
    Enter PDB Chain:<input type="text" name="Chain_ID"><br> 
    <label><input type="radio" name="site" value="/cgi-bin/prog1.py">P-P</label> 
    <label><input type="radio" name="site" value="/cgi-bin/prog2.py">P-L</label> 
    <label><input type="radio" name="site" value="/cgi-bin/prog3.py">P-C</label> 
    <p> 
    <input type="submit" value="Submit"> 
    </form> 
</body> 
</html> 

Hilfe!

+0

Ist das falsch platzierte Closing '' 'für Ihr' onsubmit' Attribut nur ein Tippfehler in der Frage? (Ich nehme an, Sie haben 'method = 'POST'' nicht vor innerhalb des Attributs zu sein, weil es nach der "Rückkehr" ist ...) – nnnnnn

+0

@nnnnnn 'onsubm it = "window.open (whatsite (das))"; falsch zurückgeben; method = 'POST'> 'führt zu '#'. Nicht zu dem im Radiobutton erwähnten Programm wechseln. Ich hoffe, das ist richtig. Wenn nicht, kannst du es bitte erklären? –

+0

Warum ist 'method = 'POST'' * innerhalb * des Attributs 'onsubmit'? (Und was denkst du, das ist in 'whatsite (this)'? Es wird das Formularelement sein ...) – nnnnnn

Antwort

0

Ich glaube, Sie den action Attributwert des Formulars in onsubmit Verfahren statt window.open Methode ändern, sollten Sie so etwas wie dies versuchen:

<!DOCTYPE html> 
<html> 
<head> 


<title></title> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <script type="text/javascript"> 
    function whichsite(form){ 
    var sites = form.elements.site, i = sites.length; 
    while (--i > -1){ 
    if(sites[i].checked){ 
     // here change the action value instead of return the site 
     form.action = sites[i].value; 
     } 
    } 
    } 
    </script> 
</head> 
<body> 
    <form action="#" onsubmit="whichsite(this); return false;" method="POST"> 
    <b>Program Jump</b> 
    <p> 
    Enter PDB ID:<input type="text" name="PDB_ID"><br> 
    Enter PDB Chain:<input type="text" name="Chain_ID"><br> 
    <label><input type="radio" name="site" value="/cgi-bin/prog1.py">P-P</label> 
    <label><input type="radio" name="site" value="/cgi-bin/prog2.py">P-L</label> 
    <label><input type="radio" name="site" value="/cgi-bin/prog3.py">P-C</label> 
    <p> 
    <input type="submit" value="Submit"> 
    </form> 
</body> 
</html> 

Oder Sie können versuchen, den Wert action in dem ändern Ereignis von Radio, hoffe, dass dies helfen kann ~~~

Verwandte Themen