Visualizzazione dei risultati da 1 a 8 su 8

Discussione: attivare onChange

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2020
    Messaggi
    46

    attivare onChange

    salve a tutti,
    tramite jsInjector stò semplificando la compilazione di un form.

    Ho un input con il seguente onChange:
    codice:
    function onChange(event) {
      _this.props.onChangeFunc ? _this.props.onChangeFunc(event) : event.preventDefault();
    }
    con js inserisco un valore nell' input ma non si attiva la relativa funzione sull' evento onChange.

    Come potrei risolvere??
    graziee

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, l'evento change è normalmente innescato solo quando il valore del campo è cambiato tramite un'azione effettuata dall'utente, cioè non in modo programmatico.

    Per forzare l'esecuzione di tale evento puoi usare il metodo dispatchEvent() per quell'input dopo che ne viene impostato il valore:

    codice:
    tuoInput.value = 'nuovo valore';
    tuoInput.dispatchEvent(new Event('change'));
    In alternativa, se l'evento è applicato tramite attributo onchange direttamente sul tag, puoi richiamarlo usando il relativo metodo onchange(), sempre dopo l'impostazione del valore:
    codice:
    tuoInput.value = 'nuovo valore';
    tuoInput.onchange();
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2020
    Messaggi
    46
    grazie KillerWorm
    ho provato entrambi le soluzione.
    La seconda mi da errore, i.onChange(provato anche con onchange) is not a function, la prima mi risponde true ma non succede nulla.
    L'input interessato e' il seguente:

  4. #4

  5. #5
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Quote Originariamente inviata da toreg
    La seconda mi da errore
    Chiaro, dalla tua immagine, non vedo infatti alcun attributo onchange applicato direttamente sul tag, per cui non puoi usare il secondo metodo, come ti ho specificato.

    Il primo metodo (col dispatchEvent) dovrebbe funzionare in qualunque caso. Se non succede nulla presumo che ci sia qualcos'altro da considerare ma non è facile capire senza vedere la pagina in questione. Puoi postare il link?
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2020
    Messaggi
    46
    per accedervi � necessario un account fornito direttamente da loro.

    Se clicco su "apri in debugger" riferito alla riga dell' input, mi manda a questa porzione di codice, non s� se pu� aiutare! Credo sia stato utilizzato un framework..

    codice:
    (0, _createClass2["default"])(SearchBox, [{
            key: "render",
            value: function render() {
              var _this = this;
        
              return _react["default"].createElement("div", {
                className: this.props.wrapperClass ? this.props.wrapperClass : ""
              }, _react["default"].createElement("label", {
                className: this.props.titleClass ? this.props.titleClass : ""
              }, _react["default"].createElement("span", {
                dangerouslySetInnerHTML: {
                  __html: this.props.title
                }
              })), _react["default"].createElement("label", {
                className: this.props.searchClass ? this.props.searchClass : ""
              }, _react["default"].createElement("input", {
                type: "text",
                placeholder: _SitecoreHelper["default"].getPlaceholderText(this.props.isEditing, this.props.searchPlaceholder),
                onChange: function onChange(event) {
                  _this.props.onChangeFunc ? _this.props.onChangeFunc(event) : event.preventDefault();
                },
                ref: this.props.refData
              })));
            }
          }]);
          return SearchBox;
        }(_react["default"].Component);
        
        module.exports = SearchBox;

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2020
    Messaggi
    46
    è visibile la funzione onChange.. volendo richiamare direttamente che verrebbe richiamato dall'evento onchange??
    codice:
    onChange: function onChange(event) {              _this.props.onChangeFunc ? _this.props.onChangeFunc(event) : event.preventDefault();
                },

  8. #8
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Quote Originariamente inviata da toreg
    Credo sia stato utilizzato un framework
    Vedo, il nome "react" è sicuramente un indizio

    Quote Originariamente inviata da toreg
    volendo richiamare direttamente che verrebbe richiamato dall'evento onchange??
    Quella funzione è definita in un contesto particolare dove ci sono riferimenti a variabili definite localmente all'interno dello stesso contesto; deduco che non sia così semplice richiamarla direttamente fuori dal proprio contesto.

    Tra l'altro quella funzione è solo un tramite in cui verrebbe eventualmente chiamata l'altra specifica funzione "_this.props.onChangeFunc()".

    Prova magari a chiarire cosa dovrebbe succedere quando l'evento change avviene normalmente, cioè quando l'utente modifica il valore e quindi esce dal campo; vediamo se in qualche modo possiamo aggirare l'ostacolo.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

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.