javascript - create_row() 函数的问题

标签 javascript forms dojo

全部,

此 javascript 代码根据用户对下拉框的选择动态添加输入框。我几乎把它放在了需要的地方,但是现在,“msds_copy”和“cofa_copy”案例在我测试时都显示相同的“html2”数据。 “msds_copy”选项应该使第二个表单框显示“区域/语言”,而不是显示“批号”。

知道为什么会发生这种情况吗?

inquiry_type_onchange: function(e) {
        var place_order = 1,
            order_status = 2,
            telalert_signup = 3,
            invoice_questions = 4,
            msds_copy = 5,
            cofa_copy = 6,
            html = null,
            html2 = null,
            inquiry = e.target,
            id = "inquiry_type_addendum",
            form_row = dojo.query("."+id);

        //Clear any possible previous additions. 
        if (form_row != null)
            form_row.forEach(dojo.destroy);

        //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 msds_copy:
                html = this.create_form_row(id, "Product Name:");
                html2 = this.create_form_row(id + "_2", "Region / Language:");  
            case cofa_copy:
                html = this.create_form_row(id, "Product Name:");
                html2 = this.create_form_row(id + "_2", "Batch Number:");
            default:
        }

        if (html == null) return;
        //Place the new element below the inquiry_type field. 
        var placeat = dojo.byId('buttons');
        dojo.place(html, placeat, "before");
        if(html2!=null)
            dojo.place(html2, placeat, "before");
    },

    create_form_row: function(id, label) {
        //Container
        var a = dojo.create("div", { id: id, className: "question inquiry_type_addendum", 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 full_number", name: label }, d);
        dojo.place(d, c);
        dojo.place(c, a);
        return a;
    }
});

最佳答案

你错过了你的breaks 和 switch case msds_copy 正在执行然后进入下一个 case cofa_copy

        case msds_copy:
            html = this.create_form_row(id, "Product Name:");
            html2 = this.create_form_row(id + "_2", "Region / Language:");  
            break; // <----
        case cofa_copy:
            html = this.create_form_row(id, "Product Name:");
            html2 = this.create_form_row(id + "_2", "Batch Number:");
            break; // <----

关于javascript - create_row() 函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7772278/

相关文章:

javascript - 来自 javascript 的 HTML 验证

javascript - 如何在 JavaScript 中调用原型(prototype)之外的函数?

javascript - JS 未显示错误结果已更新

python - django - form.cleaned_data[] 用于模型中的所有字段

javascript - 如何清除/清空 dojo 小部件

javascript - dijit 对话框调整复杂性

Javascript同步事件问题

html - 无法设置表单提交按钮的样式

javascript - 如何在表单本身之外提交表单

javascript - 如何通过 id 注册删除 dojo 小部件,但未在任何 DOM 节点中引用