Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
Scegliere direttamente con il tasto "submit".
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
axlman
Dio minore
Dio minore


Registrato: 19/10/06 17:58
Messaggi: 582
Residenza: l'Universo più scalcinato del Multiverso

MessaggioInviato: 02 Dic 2007 04:57    Oggetto: Scegliere direttamente con il tasto "submit". Rispondi citando

Problema: come fare una ricerca usando direttamente i pulsanti submit senza passare per i radio e potendo scegliere tra tutto il web o un solo sito.

Lo "scheletro" della rappresentazione è:
Codice:

<form>
<table>
  <tr>
  <td>
    <input maxlength="100" value="" name="q" size="35" type="text"/>
  </td>
  </tr>
  <tr>
  <td>
     <table>
     <tr>
       <td>
         <input value="Cerca nel web" name="sa" type="submit"/>
       </td>
       <td>
         <input value="Cerca nel blog" name="sa" type="submit"/>
       </td>
     </tr>
     </table>
  </td>
  </tr>
</table>
</form>


Il problema è che il valore di q (la parola da inserire nella ricerca) lo si da una sola volta, ma gli input hidden dovranno essere diversi a seconda che voglia cercare in tutto il web o in un solo sito.

Dovrebbe potersi risolvere con uno javascript, ma non riesco a raccapezzarmici. Idee?
Top
Profilo Invia messaggio privato
kluster
Dio maturo
Dio maturo


Registrato: 15/04/06 13:14
Messaggi: 2898

MessaggioInviato: 02 Dic 2007 05:12    Oggetto: Rispondi citando

Non mi è molto chiaro il problema perchè altrimenti basta che chiami o crei o valorizzi gli hidden secondo un criterio logico e poi fai un if
lato server.
se è stato premuto l'input con valore "sa" leggi solo gli hidden giusti, idem per quell'altro.
Question
Top
Profilo Invia messaggio privato
axlman
Dio minore
Dio minore


Registrato: 19/10/06 17:58
Messaggi: 582
Residenza: l'Universo più scalcinato del Multiverso

MessaggioInviato: 02 Dic 2007 05:41    Oggetto: Rispondi citando

Mi sa che è ancora troppo difficile per me, allora.

In pratica metto la parola da cercare nel box di testo (parola che identifico con q).

Poi se schiaccio il submit "Cerca nel web" devo fornire a Google q e gli hidden per cercare su tutto il web, se schiaccio "Cerca nel sito" gli devo fornire sempre q ma questa volta gli hidden devono essere quelli per cercare solo su un determinato sito.

Tra l'altro non so nemmeno quali nomi e relativi valori devo dare agli hidden nei due casi, quindi avrei bisogno di suggerimenti anche su questi ultimi.
Top
Profilo Invia messaggio privato
kluster
Dio maturo
Dio maturo


Registrato: 15/04/06 13:14
Messaggi: 2898

MessaggioInviato: 02 Dic 2007 06:17    Oggetto: Rispondi citando

Codice:

<head>
<script type="text/javascript">
function cercaGoogle(where)
{
var q, siteSearch,domains,url;
q            = document.forms[0].elements['q'].value;
siteSearch      = document.forms[0].elements['sitesearch'].value;
domains         = document.forms[0].elements['domains'].value;
url               = "http://www.google.it/search?q=" + encodeURI(q);
location.href   = (where==0)? url : url+"&sitesearch="+encodeURI(siteSearch)+"&domains="+encodeURI(domains);
}
</script>
</head>



Codice:

<form>
   <input type="text" name="q">
   <input type="button" value="cerca nel web" onclick="cercaGoogle(0)" />
   <input type="button" value="cerca nel sito tuosito.com" onclick="cercaGoogle(1)" />
   <input type="hidden"  name="sitesearch" value="tuosito.com" />
   <input type="hidden"  name="domains" value="tuosito.com" />
</form>


è tutto via javascript ora non ho trovato altri workaround utili perchè se non usi radio non mi viene in mente altro.

Sono 2 bottoni
Se preme il primo (cerca nel web) viene passato 0 alla funzione e la location.href (quella che rimanda alla pagina di ricerca di google) è uguale alla variabile url (il search + la variabile q che è in comune)

In tutti gli altri casi (puoi mettere 1 come qualsiasi numero) è uguale alla variabile url + l'aggiunta dei 2 parametri hidden recuperati dai campi del form

volendo con + numeri e + bottoni puoi fare un if + esteso invece che il ternario che ho usato io e far ricercare il termine su + siti (aggiungendo hidden aggiuntivi) sempre su google

EDIT: mi ero dimenticato un punto e virgola
Top
Profilo Invia messaggio privato
axlman
Dio minore
Dio minore


Registrato: 19/10/06 17:58
Messaggi: 582
Residenza: l'Universo più scalcinato del Multiverso

MessaggioInviato: 02 Dic 2007 07:26    Oggetto: Rispondi citando

kluster ha scritto:

EDIT: mi ero dimenticato un punto e virgola

Me ne ero accorto.
E l'avevo aggiunta.

Ma il fetente mi continua a dire "The reference to entity "sitesearch" must end with the ';' delimiter."

Perché mi odia tanto?
Top
Profilo Invia messaggio privato
kluster
Dio maturo
Dio maturo


Registrato: 15/04/06 13:14
Messaggi: 2898

MessaggioInviato: 02 Dic 2007 14:14    Oggetto: Rispondi citando

forse
Citazione:

<form>
<input type="text" name="q">
<input type="button" value="cerca nel web" onclick="cercaGoogle(0);" />
<input type="button" value="cerca nel sito tuosito.com" onclick="cercaGoogle(1);" />
<input type="hidden" name="sitesearch" value="tuosito.com" />
<input type="hidden" name="domains" value="tuosito.com" />
</form>


ma strano cmq Question
Top
Profilo Invia messaggio privato
axlman
Dio minore
Dio minore


Registrato: 19/10/06 17:58
Messaggi: 582
Residenza: l'Universo più scalcinato del Multiverso

MessaggioInviato: 03 Dic 2007 02:35    Oggetto: Rispondi citando

Mi sono spiegato male: l'errore me lo dà quando metto lo script nell'head, il codice nel form non mi dà problemi.

Forse dipende dal punto in cui inserisco lo script? Io l'ho messo subito prima della chiusura dell'head, così da sapere subito quali sono le mie modifiche.

EDIT
Sì, dipende da dove lo metto: l'ho spostato e adesso me lo accetta, pur continuando a non funzionare. Dove diavolo va posizionato?
Top
Profilo Invia messaggio privato
kluster
Dio maturo
Dio maturo


Registrato: 15/04/06 13:14
Messaggi: 2898

MessaggioInviato: 03 Dic 2007 03:32    Oggetto: Rispondi citando

prova nel <body>
Top
Profilo Invia messaggio privato
axlman
Dio minore
Dio minore


Registrato: 19/10/06 17:58
Messaggi: 582
Residenza: l'Universo più scalcinato del Multiverso

MessaggioInviato: 03 Dic 2007 04:18    Oggetto: Rispondi citando

Continua a non funzionare. L'ho messo subito prima del form, forse anche qui dipende dal posizionamento.

Ho cercato di capirci qualcosa nel codice (so bene o male come funzionano i linguaggi in generale ma dello javascript non conosco la sintassi) e non capisco un paio di cose:

dai il location.href nel caso where sia uguale a zero, ma dove dice quale deve essere in caso where sia diverso?

dove dice che i valori degli hidden del form devono essere messi come valori delle variabili dello script?

dove dice di aprire una pagina e mettere l'url corretto, una volta deciso quale deve usare?

Almeno imparo qualcosa e a tal proposito, grazie mille per l'aiuto.
Top
Profilo Invia messaggio privato
kluster
Dio maturo
Dio maturo


Registrato: 15/04/06 13:14
Messaggi: 2898

MessaggioInviato: 03 Dic 2007 04:39    Oggetto: Rispondi citando


  1. instanzio le variabili
    Citazione:


    <script type="text/javascript">
    function cercaGoogle(where)
    {

    var q, siteSearch,domains,url;


  2. prendo il valore dell'input q che viene preso dalla collection (array di oggetti) document.forms[0], 0 perchè è il primo form.
    Citazione:

    q = document.forms[0].elements['q'].value;


    Avrei potuto dare un nome (name) al form:
    Codice:

    <form name="pippo">
    ...

    e richiamarla con
    Codice:

    document.forms['pippo']

    quindi vedi che l'accesso è o per indice o per riferimento nome.
    All'interno della collection forms[0] è contenuta la collection elements (tutti i campi del form) anche qui accesso per indice numerico o + facile per nome. l'oggetto elements[nome] ha il valore nella proprietà value.

  3. idem per i 2 valori del campo siteSearch e domains.
    Citazione:

    siteSearch = document.forms[0].elements['sitesearch'].value;
    domains = document.forms[0].elements['domains'].value;


  4. l'url è uguale alla stringa fissa di ricerca di google + il primo parametro per querystring q (encodeURI serve per risolvere i vari caratteri strani, spazio diventa %20 etc etc)
    Codice:

    url               = "http://www.google.it/search?q=" + encodeURI(q);



  5. questo è un operatore ternario, la sintassi è
    variabile = (quale condizione) ? "se vero": "se falso";
    Citazione:

    location.href = (where==0)? url : url+"&sitesearch="+encodeURI(siteSearch)+"&domains="+encodeURI(domains);


    quindi location è uguale a = (where è uguale a 0)? se si url+....., altrimenti (quindi tutti gli altri casi) url valorizzato prima al punto 4


se vuoi fare + valori levi l'operatore ternario e fai un if elseif semplice
Codice:

if (where == 0)
{
operazioni
}
elseif (where ==1) {/* seconda condizione */}
elseif (where ==2) {/* terza condizione */}
.....
elseif (where ==n) {/* n condizione */}
Top
Profilo Invia messaggio privato
axlman
Dio minore
Dio minore


Registrato: 19/10/06 17:58
Messaggi: 582
Residenza: l'Universo più scalcinato del Multiverso

MessaggioInviato: 03 Dic 2007 04:54    Oggetto: Rispondi citando

Riguardo le variabili credo di aver capito: provo a dare un nome al form, così non ci sono ambiguità.
Però se non ho capito male il codice nel form dovrebbe avere i valori invertiti, cioè:

Citazione:
<input type="button" value="cerca nel web" onclick="cercaGoogle(1)" />
<input type="button" value="cerca nel sito tuosito.com" onclick="cercaGoogle(0)" />


Non mi è ancora chiaro dove dice che alla pressione di un pulasante si deve aprire una nuova finestra con l'url desiderato, però.
Top
Profilo Invia messaggio privato
kluster
Dio maturo
Dio maturo


Registrato: 15/04/06 13:14
Messaggi: 2898

MessaggioInviato: 03 Dic 2007 04:57    Oggetto: Rispondi citando

esatto, fai un bottone per ogni ricerca specifica
tu lo vuoi in _blank? cioè esterna?

location.href=""
fa cambiare la location alla pagina.
E' l'equivalente js di scrivere nella barra degli indirizzi e dare invio.
Top
Profilo Invia messaggio privato
kluster
Dio maturo
Dio maturo


Registrato: 15/04/06 13:14
Messaggi: 2898

MessaggioInviato: 03 Dic 2007 05:03    Oggetto: Rispondi citando

altrimenti invece del comando

Codice:

location.href = (where==0)? url : url+"&sitesearch="+encodeURI(siteSearch)+"&domains="+encodeURI(domains);


credo si possa usare
Codice:

...
( where==0)? window.open(url,'_blank') :  window.open(url+"&sitesearch="+encodeURI(siteSearch)+"&domains="+encodeURI(dodomains),'_blank');

Top
Profilo Invia messaggio privato
axlman
Dio minore
Dio minore


Registrato: 19/10/06 17:58
Messaggi: 582
Residenza: l'Universo più scalcinato del Multiverso

MessaggioInviato: 03 Dic 2007 05:39    Oggetto: Rispondi citando

Ma porca zozza!!!!!!
Ho dato il nome al form per togliere le ambiguità e funzionava, aprendo la ricerca nella stessa pagina.

Poi ho sostituito il location.href con i window.open per farla aprire in una nuova finestra e ha smesso di funzionare.

Ho rimesso il location.href e adesso non mi funziona più neanche con quello.

Ma perché? Perché?
Top
Profilo Invia messaggio privato
axlman
Dio minore
Dio minore


Registrato: 19/10/06 17:58
Messaggi: 582
Residenza: l'Universo più scalcinato del Multiverso

MessaggioInviato: 03 Dic 2007 06:16    Oggetto: Rispondi citando

FUNGE!!!!!!!!!

Copincollando, non mi ero accorto che avevi scritto "dodomains" invece di "domains". E i valori che avevi messo tu erano giusti, non invertiti: sono io che avevo frainteso la sintassi.

Ricapitolando, ecco il codice che fa aprire la ricerca in una nuova pagina, nel web o in un sito specifico:


edit by kluster:
inserire nel tag HEAD

Codice:

<head>
<script type="text/javascript">
function cercaGoogle(where)
{
var ricerca,sito,dominio,url;
ricerca=document.forms['googlepersonale'].elements['q'].value;
sito=document.forms['googlepersonale'].elements['sitesearch'].value;
dominio=document.forms['googlepersonale'].elements['domains'].value;
url="http://www.google.it/search?q="+encodeURI(ricerca);
(where==0)? window.open(url,'_blank') :  window.open(url+"&sitesearch="+encodeURI(sito)+"&domains="+encodeURI(dominio),'_blank');
}
</script>
</head>

edit by kluster:
inserire nel tag BODY

Codice:

<body>
...
<form name="googlepersonale">
   <input value="" name="q" type="text"/>
   <input value="Cerca nel web" onclick="cercaGoogle(0)" type="button"/>
   <input value="Cerca in sitoapiacere.com" onclick="cercaGoogle(1)" type="button"/>
   <input value="sitoapiacere.com" name="sitesearch" type="hidden"/>
   <input value="sitoapiacere.com" name="domains" type="hidden"/>
</form>
....
</body>



Grazie kluster, sei grande!


8)
Top
Profilo Invia messaggio privato
kluster
Dio maturo
Dio maturo


Registrato: 15/04/06 13:14
Messaggi: 2898

MessaggioInviato: 03 Dic 2007 12:04    Oggetto: Rispondi citando

Bene, prego Smile. E uno, ora vediamo per quell'altro degli alert...
Top
Profilo Invia messaggio privato
axlman
Dio minore
Dio minore


Registrato: 19/10/06 17:58
Messaggi: 582
Residenza: l'Universo più scalcinato del Multiverso

MessaggioInviato: 03 Dic 2007 12:33    Oggetto: Rispondi citando

kluster ha scritto:
Bene, prego Smile. E uno, ora vediamo per quell'altro degli alert...

Ti meriti tutti i complimenti del mondo, se non altro per la pazienza.
Comunque a me con lo script nell'head non funziona.

Presumo dipenda da come è strutturato Blogger: tu hai una pagina dove scrivi dei blocchi di codice (delimitati da <div class="widget-content"></div>) e poi questi blocchi li puoi spostare a piacere nell'impaginazione, solo trascinandoli dove vuoi che stiano (in cima alla pagina, in fondo, di fianco) nell'apposita pagina di Blogger che li visualizza appunto come blocchi da spostare.
Lo script, per farlo funzionare, ho dovuto inserirlo nello stesso blocco del form, subito prima di esso, come avevo scritto nel mio messaggio precedente.
Top
Profilo Invia messaggio privato
kluster
Dio maturo
Dio maturo


Registrato: 15/04/06 13:14
Messaggi: 2898

MessaggioInviato: 03 Dic 2007 12:42    Oggetto: Rispondi citando

axlman ha scritto:
kluster ha scritto:
Bene, prego Smile. E uno, ora vediamo per quell'altro degli alert...

Ti meriti tutti i complimenti del mondo, se non altro per la pazienza.
Comunque a me con lo script nell'head non funziona.

Presumo dipenda da come è strutturato Blogger: tu hai una pagina dove scrivi dei blocchi di codice (delimitati da <div class="widget-content"></div>) e poi questi blocchi li puoi spostare a piacere nell'impaginazione, solo trascinandoli dove vuoi che stiano (in cima alla pagina, in fondo, di fianco) nell'apposita pagina di Blogger che li visualizza appunto come blocchi da spostare.
Lo script, per farlo funzionare, ho dovuto inserirlo nello stesso blocco del form, subito prima di esso, come avevo scritto nel mio messaggio precedente.

il 3D di riferimento è questo.
a quindi anche quell'altro funziona, bene 8) , ho rinominato il 3D.
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11806
Residenza: Tokelau

MessaggioInviato: 03 Dic 2007 12:43    Oggetto: Rispondi citando

scusate se arrivo tardi ma volevo aggiungere che se in una form c'è più di un pulsante di submit poi nella pagina che riceve la form si può sapere quale dei due è stato premuto, basta dare ai due pulsanti un nome diverso...

non bastava questo?
Top
Profilo Invia messaggio privato HomePage
kluster
Dio maturo
Dio maturo


Registrato: 15/04/06 13:14
Messaggi: 2898

MessaggioInviato: 03 Dic 2007 12:45    Oggetto: Rispondi

SverX ha scritto:
scusate se arrivo tardi ma volevo aggiungere che se in una form c'è più di un pulsante di submit poi nella pagina che riceve la form si può sapere quale dei due è stato premuto, basta dare ai due pulsanti un nome diverso...

non bastava questo?


la pagina che riceve il form è google, e c'era il problema di alcuni hidden che doveva prendere a seconda del click (senza usare radio)
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 2 ore
Vai a 1, 2  Successivo
Pagina 1 di 2

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi