web-dev-qa-db-ja.com

非表示の忍者フォームフィールドを事前入力できません

リストから特定のブローカーを選択できるページがある場合。ブローカー名は、Ninja Formsの隠しフィールドに入力する必要があります。

_if(jQuery('#broker-list').length) { //checks if the list exists
    jQuery(document).on( 'nfFormReady', function( e, layoutView ) {
        var broker_name = "";

        jQuery(document).on("click", ".broker" , function() {
            broker_name = jQuery('.broker__name', this).text();

            console.log(broker_name); // this works perfectly

            if(jQuery('#nf-field-33').length) {
                jQuery(this).val(broker_name); //value of field is still empty
            }
            if(jQuery('#nf-field-34').length) {
                jQuery(this).val(broker_name); //value of field is still empty
            }
        });
    });
}
_

忍者フォームのフィールドにjQueryを事前入力するためには、jQuery(document).on( 'nfFormReady', function( e, layoutView ) { });でラップする必要があるといつも思っていました。しかし、それはこの場合はうまくいかないようです。ここはどうしたの?

PHPフィールドにデータを入力する可能性があることは知っていますが、これはこの場合のオプションではありません。

上記のコードをコンソールにコピーして貼り付けると、完全に機能します。

1
Dennis

https://developer.ninjaforms.com/codex/changing-field-values/ によると、プログラムでNinfa Formsのフィールド値を変更する場合は、.trigger( 'change' )を追加する必要があります。

これはうまくいくはずです:

if(jQuery('#broker-list').length) { //checks if the list exists
    jQuery(document).on( 'nfFormReady', function( e, layoutView ) {
        var broker_name = "";

        jQuery(document).on("click", ".broker" , function() {
            broker_name = jQuery('.broker__name', this).text();

            console.log(broker_name); // this works perfectly

            if(jQuery('#nf-field-33').length) {
                jQuery(this).val(broker_name).trigger( 'change' );
            }
            if(jQuery('#nf-field-34').length) {
                jQuery(this).val(broker_name).trigger( 'change' );
            }
        });
    });
}
1
them.es