Terve.
Minulla on sivulla multiselect listbox ja yritän siitä valitut arvot funktiolle, mutta jokin menee pieleen.
Löysin netistä kaksi funktiota (getSelected ja outputselected), jotka ainakin tulostavat valitut arvot alert-funktiolla.
Kokeilin muuttaa alert-funktion Hae-funktioksi ja antaa valitut arvot sille, mutta testi.php skripti jota kutsutaan Hae-funktiosta palauttaa vain: 0
function getSelected(opt) {
var selected = new Array();
var index = 0;
for (var intLoop = 0; intLoop < opt.length; intLoop++) {
if ((opt[intLoop].selected) ||
(opt[intLoop].checked)) {
index = selected.length;
selected[index] = new Object;
selected[index].value = opt[intLoop].value;
selected[index].index = intLoop;
}
}
return selected;
}
function outputSelected(opt) {
var sel = getSelected(opt);
var strSel = "";
for (var item in sel)
strSel += sel[item].value + "\n";
Hae(strSel);
}
function Hae(strSel) {
var strURL="testi.php?valinnat="+strSel;
var req = getXMLHTTP();
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById('testidiv').innerHTML = req.responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}
}Tässä multiselsect listbox ja nappi
<SELECT NAME="multistore" SIZE=3 MULTIPLE>
<OPTION VALUE="Computer" SELECTED>Computer</OPTION>
<OPTION VALUE="Bookstore">Book Store</OPTION>
<OPTION VALUE="MailOrder" SELECTED>Mail Order</OPTION>
</SELECT>
<INPUT TYPE=BUTTON VALUE="Selected List Items"
ONCLICK="outputSelected(this.form.multistore.options)">Eli miten saan vietyä valitut listboksin arvot funktiolle ja sitä kautta sitten php-skriptille joka vaikkapa tulostaisi arvot ruudulle ?
Tässä vielä php-skripti (testi.php)
<?php $valinnat=intval($_GET['strSel']); echo "<h1>$valinnat</h1>"; //RUUDULLE TULOSTUU 0 ?>
Heippa javerkki!
yksinkertaistetaan hieman...
<html><head><script language="JavaScript">
function getSelected(response, opt) {
var items = new Array(); items = response;
var i = 0; var strSel = "";
for (i = 0; i <items.length; i++) {
if (items[i].selected) {
strSel += items[i].value + "\n";
alert(strSel);
//Hae(strSel);
}
}
}
//...
</script></head><body><form>
<SELECT NAME="multistore" SIZE=3 MULTIPLE>
<OPTION VALUE="Computer" SELECTED>Computer</OPTION>
<OPTION VALUE="Bookstore">Book Store</OPTION>
<OPTION VALUE="MailOrder" SELECTED>Mail Order</OPTION>
</SELECT>
<INPUT TYPE=BUTTON VALUE="Selected List Items"
ONCLICK="getSelected(this.form.multistore.options)"/>
</form></body></html>Heippa taas javerkki!
sama aihe osa2...
<HTML><HEAD></HEAD> <script Language="JavaScript" Src="scripti.js"></script> <BODY> <FORM id=form1> <SELECT id=ListBox1 multiple size=3 name=multistore> <OPTION value=Computer>Computer</OPTION> <OPTION value=Bookstore>Book Store</OPTION> <OPTION value=MailOrder>Mail Order</OPTION></SELECT> <INPUT onclick=getSelected(this.form.ListBox1.options) type=button value="Selected List Items"> </FORM></BODY></HTML>
//scripti.js
var strSel;
function getSelected(response, opt){
strSel = "";
for (var i = 0; i <response.length; i++){
if (response[i].selected){
//NAPATAAN INDEKSI VAIN JOS VALITTU ***
strSel += i + "\n";
document.getElementById('ListBox1').options[i].selected = 0;
}
}
if (strSel != ""){
getXMLData();
}
else{
alert("Absolut ingenting har blivit valt");
}
}
function getXMLData(){
var strURL="testi.php?valinnat="+strSel;
var req = getXmlHttp() ;
if (req){
req.onreadystatechange = function(){
if (req.readyState == 4){
if (req.status == 200){
try{
document.getElementById('testdiv').innerHTML = "";
}
catch(e)
{
var xdiv = "<div id=\"testdiv\"></div>";
document.getElementById('form1').innerHTML += xdiv;
}
document.getElementById('testdiv').innerHTML = req.responseText;
}
else {
alert("Uno problemo: XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}
}<?php $valinnat=intval($_GET['strSel']); //NYT RUUDULLE VOI TULOSTUA 0:n LISÄKSI MUUTAKIN *** echo "<h1>$valinnat</h1>"; ?>
paitsi et
$valinnat = $_GET['valinnat'];
Kiitoksia todella paljon vaivannäöstäsi Nea!
Nyt sivusto toimii.
Kiitos vielä kerran!
*muokattu*
Pienenpieni kysymys vielä.
Miten saisin "kuljetettua" yhden toisenkin arvon testi.php:lle.
eli kun kutsun funktiota getSelected, niin haluaisin kuljettaa yhden arvon testi.php:lle siinä mukana:
getselected(this.form.ListBox1.options, this.form.div3.value)
Olisiko div-3:n arvo mahdollista saada vasta "viimeisessä" funktiossa tyyliin:
function getXMLData(){
var arvo=form.div3.value;
var strURL="testi.php?valinnat="+strSel+"&div3arvo="+arvo;Tai siis tiedän, ettei sitä yo. tavalla saa, koska kokeilin jo, mutta
onko mahdollista ylipäätänsä saada tuossa kohtaa napattua div:n arvoa mukaan ?
Heippa taas javerkki!
<html><head></head>
<script language="javascript">
function funktio(){
var arvo=document.getElementById('testidiv').innerHTML
alert(arvo)
}
</script>
<body><form>
<input type="button" id="nappi" onclick="funktio()"
value="nappi" style="width=50"/>
<div id ="testidiv">plaa plaa plaa</div>
</form></body></html>Aihe on jo aika vanha, joten et voi enää vastata siihen.