Создание строки формы с помощью Dojo

#javascript #forms #dojo

#javascript #формы #dojo

Вопрос:

Я новичок в Dojo и работаю с чужим кодом. В настоящее время эта функция ищет значение выпадающего списка. На основе этого значения он добавляет другое поле формы «на лету» для заполнения пользователем. Во всех примерах, которые у меня есть, я видел только функцию, создающую одно добавленное поле формы. Однако в конкретном случае я хотел бы добавить вторую строку с другим полем формы. Я подумал, что, возможно, повторение строки дважды поможет, но это не так. Есть мысли, как это сделать? Заранее спасибо…

Оператор переключения:

 if (form_row != null)
    dojo.destroy(form_row);
//Add the correct new field to the form.
switch (inquiry.selectedIndex) {
    case place_order:
        html = this.create_form_row(id, "Account Number");
        break;
    case order_status:
        html = this.create_form_row(id, "Order Number");
        break;
    case telalert_signup:
        html = this.create_form_row(id, "Account Number");
        break;
    case invoice_questions:
        html = this.create_form_row(id, "Invoice Number");
        break;
    case new_option:
        html = this.create_form_row(id, "Invoice Number");
        (WANT TO CREATE A SECOND ROW HERE!)
        break;
    default:
}
  

Вызываемая функция:

 create_form_row: function(id, label) {
    //Container
    var a = dojo.create("div", { id: id, className: "question", style: "padding-top:4px;" });
    //Label
    var b = dojo.create("div", { className: "label", innerHTML: label, style: "margin-top:8px;" }, a);
    //Field
    var c = dojo.create("div", { className: "field" });
    var d = dojo.create("span", { className: "full_number_span span" });
    var e = dojo.create("input", { type: "text", className: "textbox acct_num", name: label }, d);
    dojo.place(d, c);
    dojo.place(c, a);
    return a;
}
  

Комментарии:

1. Вы должны быть более конкретными, когда говорите, что что-то «не сработало» или «не сработало». Мы не можем читать ваши мысли.

Ответ №1:

Если вы попытались

 case new_option:
    html = this.create_form_row(id, "Invoice Number");
    html = this.create_form_row(id, "SOMETHING ELSE");
    break;
  

это не сработает, потому что вы просто перезапишете переменную html и выбросите первую.

Вы можете либо изменить материал так, чтобы html должен был представлять собой список узлов, либо вы можете попробовать обернуть ваши два узла формы в один

 var html = dojo.create('div');
dojo.place(this.create_form_row(...), html);
dojo.place(this.create_form_row(...), html);