jquery动态控件创建显示错误

时间:2017-05-24 09:53:32

标签: jquery html asp.net-mvc entity-framework c#-4.0

//control creation
function CreateTextBox(id, type, value, cls) {
$('<Input />', { id: id, type: type, name: 'textbox', value: value, "class": cls });
}

function CreatechkBox(id, type, cls) {
$('<Input />', { id: id, type: type, name: 'checkbox', value: value, "class": cls });
}

function CreateradioBox(id, type, cls) {
$("#radioholder").append($('<Input />').attr({ id: id, type: type, name: 'radiobutton' }).addClass(cls));
}

function CreateButton(id, type, value, cls) {
$("#btnholder").append($('<Input />').attr({ id: id, type: type, value: value }).addClass(cls));
}

function CreateDropDownlist(id, type, value, cls) {
$('<select />');
//$('<option />', { id: id, type: type, name: 'Label', value: value, "class": cls }).appendTo(s);
//$("#btnholder").append($('<Input />').attr({ id: id, type: type, value: value }).addClass(cls));
}

function CreateLabel(id, type, value, cls) {
$("<label>");
//$("#btnholder").append($('<Input />').attr({ id: id, type: type, value: value }).addClass(cls));
}

$(document).ready(function () {
//Ajax called .... get data and bind it into html
$.ajax({
    url: "http://localhost:63945/Home/NewIndex",
    dataType: 'json',
    type: 'get',
    cache: false,
    success: function (result) {
        $.getJSON("http://localhost:63945/Home/NewIndex", function (json) {
            var tr;
            for (var i = 0; i < json.length; i++) { // for loop start
                tr = $('<tr/>');
                var component = '';
                switch (json[i].AttrControlType) {
                    case 'TextBox':
                        component = CreateTextBox('txtBox', 'text', 'text', 'form-control');
                        break;
                    case 'DropDownList':
                        component = CreateDropDownlist();
                        break;
                    case 'Label':
                        component = CreateLabel();
                        break;
                    default:
                        component = "Not Exist";

                }
                tr.append("<td>" + json[i].Pkid + "</td>");
                tr.append("<td>" + json[i].FKid + "</td>");
                tr.append("<td>" + json[i].AttrLabel + "</td>");
                tr.append("<td>" + json[i].AttrColumn + "</td>");
                tr.append("<td>" + component + "</td>");
                tr.append("<td>" + json[i].AttrControlDatatype + "</td>");
                $('table').append(tr);

            } //for loop end
        });
    }
});
});

这里我已经创建了一些动态创建组件的函数,并且在切换情况下我正在检查条件,如果组件是标签,那么组件变量将采用文本字段,但我没有得到任何不是错误也只是&#34;未定义&#34;

3 个答案:

答案 0 :(得分:0)

应该是这样的 在html中创建div给他们id

 <div id="control"></div>

jquery的

$(document).ready(function () {
    CreateTextBox("name", "text", "Enter your name", "form-control");    
});

function CreateTextBox(id, type, value, cls) {
    var str="<input type="+type+" id="+id+" value="+value+" class="+cls+" />"
    $("#control").html(str);
}

答案 1 :(得分:0)

您需要在return函数中添加Create语句,如下所示:

function CreateTextBox(id, type, value, cls) {
    return $('<Input />', { id: id, type: type, name: 'textbox', value: value, "class": cls });
}

然后,您还需要更改以下行

tr.append("<td>" + component + "</td>");

成:

tr.append("<td>" + component[0].outerHTML + "</td>");

答案 2 :(得分:-1)

您使用的“组件”变量不在范围内,因此会产生错误。 组件应该是全局声明的,或者应该在范围内使用。