#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);