Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Aiutino controllo campo...

    Ciao!
    Dovrei chiedere aiuto per un caso particolare che è il seguente:

    ho un input area di tipo "text", nel quale ho inserito l'attributo
    onBlur="ctrlVal(this.value,X,Y)" dove X e Y sono du variabili i cui valori sono presi da db.
    Per completezza la fuzione è questa:
    _________________________________________________
    function ctrlVal(val,X,Y){if (val < X || val > Y)
    {alert("Attenzione! Il
    valore immesso deve essere compreso tra "+X+" e "+Y+".")}}
    _________________________________________________

    IL PROBLEMA è che onBlur funziona benissimo ma se invece di cliccare sul button 1 volta clicco 2 (oppure premo invio) giustamente il fuoco resta sul campo di testo e mi passa il valore (anche se errato).
    Non so come affrontare il problema dato che i parametri da controllare vengono passati "dal campo" di testo stesso.

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    forse cosi...

    function ctrlVal(inputText,X,Y){
    val = inputText.value;
    if (val < X || val > Y) {
    alert("Attenzione! Il valore immesso deve essere compreso tra "+X+" e "+Y+".")
    inputText.focus();
    }

    }

    ...

    onBlur="ctrlVal(this,X,Y)"

  3. #3

    Resta 1 problema...

    Se premo INVIO anzichè submit, onBlur non si attiva quindi non avviene alcun controllo del campo...

  4. #4

    Grazie comunque...ho risolto

    aggiungendo onBlur="ctrlVal(this.value,X,Y)" al campo di testo, pensavo che onSubmit fosse supportato soltanto dal form invece no (che sia grazie all'ereditarietà?)


  5. #5

    Invece non funzia...

    mi sono illuso che onSubmit funzionasse....
    Qualcuno MI AIUTA?

  6. #6

    RIEPILOGANDO:

    se applico l'evento onBlur ai campi di testo per la validazione, possibile che non ci sia un modo per evitare che l'utente, ad esempio all'ultimo campo, premendo INVIO non la faccia franca?
    PER ME è NECESSARIO (o almeno credo) lanciare la funzione di controllo a livello di tag input poichè esso, essendo generato dinamicamente, ha in sè anche i valori necessari alla validazione del tipo:

    onBlur="ctrlVal(this.value,<%=X%>,<%=Y%>)"

    dove this.value è il valore da controllare, X quello minimo e Y quello massimo per questo campo.

    NESSUNO HA UN CONSIGLIO^_^?

  7. #7
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    prova con:

    function ctrlVal(val,X,Y){
    if (val < X || val > Y){
    alert("Attenzione! Il
    valore immesso deve essere compreso tra "+X+" e "+Y+".")
    return false
    }
    }

    <form .... onsubmit="return ctrlVal(this.nomeCampo.value,<%=X%>,<%=Y%>)">

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  8. #8

    Non può funzionare...

    perchè l'input viene creato dinamicamente quindi i valori X e Y vengono processati all'interno del ciclo, non riesco a richiamarli da FORM. Vorrei sapere se magari è possibile che onSubmit possa richiamare onBlur, ad esempio:
    onSubmit="document.mioform.nomeInput.blur();"

    Si può?

  9. #9
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998

    Re: Non può funzionare...

    Ma e' una intuizione o l'hai realmente provato???

    perchè l'input viene creato dinamicamente quindi i valori X e Y vengono processati all'interno del ciclo, non riesco a richiamarli da FORM.
    I valori di richiamo sono anch'essi generati dinamicamente... non ho fatto altro che utilizzare la tua sintassi.

    Vorrei sapere se magari è possibile che onSubmit possa richiamare onBlur, ad esempio:
    onSubmit="document.mioform.nomeInput.blur();"
    Se esamini lo script che ti ho postato mi pare che i risultati che ottiene siano proprio quelli che occorrono... ma superando il problema che con il semplice richiamo dell'evento onblur non potresti interrompere l'invio del form.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  10. #10

    Si ma...

    Supponiamo che il recorset abbia 2 coppie di valori: 1,2 e 3,4 .



    <form ????>
    :quote: Come faccio a richiamarli qui!?

    <%while(!rs.EOF){%>
    <input type="text" onBlur="ctrlVal(<%Response.Write(rs("X")+","+rs("Y"))%>);">
    <%
    rs.MoveNext();
    }
    rs.Close();
    %>

    </form>

    1# ciclo:
    <input type="text" onBlur="ctrlVal(1,2);">

    2# ciclo:
    <input type="text" onBlur="ctrlVal(3,4);">

    se facessi come dici tu potrei fare il controllo solo sui valori del 1° ciclo cioè 1,2 perchè in quell'istante del parsing della pagina hanno valore 1,2.GIUSTO?
    SECONDO ME:
    dovevo progettarlo diversamente e gestirmi il controllo dal onSubmit.
    forse ho scoperto una "pecca" di js...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.