Как установить значение в текстовое поле из асин c функции в jquery - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь настроить чат-бота jquery, используя пример плагина, присутствующего в https://www.jqueryscript.net/form/engage-audience-conversational-chatty.html.

Ниже приведен фрагмент кода:

enter code here

var submitInput = async function () {
        if (waiting === false) {
            return;
        }
        waiting = false;

        var selected = [];
        var friendlySelected = [];



        if (curTag.tag == 'text') {
            selected = friendlySelected = textResponse.val();
        }
        //retrieve data from user supp`enter code here`lied custom tag
        else if (curTag.tag == 'custom') {
            //TODO allow custom to re`enter code here`turn 'friendly' and 'actual' data
            var resp = (await curTag.retriever());
            selected = resp.data;
            friendlySelected = resp.friendly ? resp.friendly : selected;
            textResponse.attr('readonly', false);
        }
        else {
            $('#ui-control .selected').each(function (i, el) {
                selected.push($(el).data('value'));
                **$('#userresp').val($(el).data('value')); 
                alert($('#userresp').val()); //THIS ALERT IS SHOWING THE VALUE**

                friendlySelected.push($(el).children('.text').text());
            });
            if (selected.length == 0) {
                var remaining = $('#ui-options .ui-option:not(.filtered-out)');
                if (curTag.tag === "radio" && remaining.length == 1) {
                    remaining.addClass('selected');
                }
                //TODO rethink submitting all of the options on enter for checkbox type...
                else if (curTag.tag === "checkbox") {
                    remaining.addClass('selected');
                }

                $('#ui-control .selected').each(function (i, el) {
                    selected.push($(el).data('value'));
                    friendlySelected.push($(el).children('.text').text());
                });
            }
        }

        //if no input, throw error
        if (selected.length == 0) {
            if (!curTag.optional) {
                return invalidInput(curTag.invalid || 'Invalid input');
            }
            friendlySelected = "No input provided";
        }

        //Join arrays with spaces for readability & text wrapping
        if (Array.isArray(friendlySelected)) {
            friendlySelected = friendlySelected.join(', ');
        }

        data[curTag.name] = selected;
        addResponse(false, friendlySelected);
        textResponse.val(null);
        removeOptions();

        if (curTag.success) {
            curTag.success(data);
        }


        if (next < tags.length) {
            window.setTimeout(nextTag, msgDelay);
        }

    };

Внутри вызова asyn c, если выдается предупреждение, оно показывает значение, но когда я на самом деле пытаюсь получить доступ к значению, оно пустое

function addTagtostep()
{
var nn = $('#userresp').val();
alert(nn);  // This is blank
}

Как установить значение для скрытого поля ввода из асинхронной функции и получить значение из поля ввода.

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...