javascript - 在特定的 javascript 函数调用中,HTML 控件的值更改为其默认值

标签 javascript jquery html

我有一个表单,我需要这样的工具,用户在文本字段中输入一些数据,然后使用 jquery 点击输入,它应该创建新的控件,如新的文本字段、下拉菜单、文本字段。它也可以工作,但是它有一个错误,比如当用户输入另一个数据并点击输入以前控件的时间值时,下拉菜单和文本字段更改为默认值。

这是我的代码:

<script type="text/javascript">
function addMbo(value){
var div = document.getElementById('mboTable');
var keycode = (event.keyCode ? event.keyCode : event.which);
if(keycode == '13'){
    event.preventDefault();
var divName = document.getElementById('mboName');
var divState = document.getElementById('mboState');
var divProgress = document.getElementById('mboProgress');

divName.innerHTML = divName.innerHTML + "<input class=form-control type=text     name=mboName value='" + value + "' id=mboNamw/>"
divState.innerHTML = divState.innerHTML + "<select class=form-control > <option value=1>In Progress </option><option <value=2>Completed</option><option  value=3>Cancled</option></select>"
divProgress.innerHTML = divProgress.innerHTML + "<input class=form-control type=text name=progress id=progress />"
document.getElementById('mboNameInput').value = null;


}
}

</script>

HTML代码:

<div class="col-sm-4">
        <div class="row">
            <div class="col-sm-5">
                <b>Objectives</b>
            </div>
            <div class="col-sm-4">
                <b>Status</b>
            </div>
            <div class="col-sm-3">
                <b>Compl. %</b>
            </div>
        </div>
        <div class="row">
            <div id="mboTable">
                <div id="mboName" class="col-sm-5"></div>
                <div id="mboState" class="col-sm-4"></div>
                <div id="mboProgress" class="col-sm-3"></div>
            </div>
        </div>
        <div class="row" >
            <div class="col-sm-5">
            <input type="text" id="mboNameInput"  class="form-control " onkeydown="addMbo(this.value)" placeholder="Your MBO...">
            </div>
        </div>
    </div>

here is jsfiddle

最佳答案

当你对任何元素执行 innerHTML 时,它会完全破坏元素中已有的内容。 相反,您应该如下所示 appndChild,

 var divName = document.getElementById('mboName');

     var mboName = document.createElement("INPUT");
    mboName.setAttribute("type", "text");
    mboName.setAttribute("class", "form-control");
divName.appendChild(mboName );

您可以对上述代码进行相关更改并使您的工作正常进行。

请参阅下面的代码以添加选择下拉列表。

var divState = document.getElementById('mboState');
var selectData = [{name:"In Progress",value:"1"},{name:"Completed",value:"2"},{name:"Cancelled",value:"3"}];
var selectList = document.createElement("select");
selectList.class = "form-control";
divState.appendChild(selectList);
for (var i = 0; i < selectData.length; i++) {
    var option = document.createElement("option");
    option.value = selectData[i].value;
    option.text = selectData[i].name;
    selectList.appendChild(option);
}

关于javascript - 在特定的 javascript 函数调用中,HTML 控件的值更改为其默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39051798/

相关文章:

javascript - 下载图片或单击按钮显示图片的保存弹出窗口

javascript - 如何在视频js中在时间间隔后显示弹出窗口

jquery - 如何从 flask 中的 'ImmutableMultiDict'获取数据

javascript - 在 div 上附加多个图像

javascript - 捕捉 Windows 应用商店应用程序时从 GridView 切换到 ListView

javascript - 尝试通过 jQuery 或 JavaScript 添加 Font Awesome 图标并使电话号码可点击

jquery - 内容在立方体下方移动

javascript - 如何在 ngGridEventScroll 上使用页面滚动?

javascript - 在 JQuery 验证中允许数字和逗号?

c# - 使用<audio>将wav文件流式传输到Ipad和Firefox