在javaScript中关闭模态后不添加表中的新行
New row in table is not added after closing modal in javaScript
我想让事情变得简单。我有一个页面与按钮在顶部,并在它下面的空html表。当我点击按钮模态弹出,我有额外的文本框和下拉两个按钮,取消和保存。当我单击Save按钮时,我想从文本框中显示数据,并下拉作为表中的新行。但实际上什么也没发生。模态消失,但表中没有添加新行。当我试图调试这个,一切似乎都是正确的,没有发现异常,所有的值都正确添加,但仍然没有。我猜问题是由模态引起的,有人知道如何解决这个问题吗?
下面是我的代码:<html>
<head>
<title>Battery Test App</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<button id="btnAddNew">Add new</button>
<br>
<br>
<table id="results" width="360">
<thead>
<tr>
<th scope="col" width="120">Date Created</th>
<th scope="col" width="120">Name</th>
<th scope="col" width="120">Tests</th>
</tr>
</thead>
</table>
<div id="modalAddNewTest" class="modal">
<div class="modal-content">
<span class="close">x</span>
<form name="formTestInfo" method="post">
Name:<br>
<input type="text" id="tbName" name="tbName">
<p id="nameVal"></p>
Test:<br>
<select id="ddlTest">
<option value="belbin">Belbin</option>
<option value="raven">Raven</option>
<option value="ppa">PPA</option>
<option value="ppaPlus">PPA+</option>
<option value="basicKnowledge">Basic Knowledge</option>
<option value="pct">PCT</option>
</select>
<br>
<br>
<button id="btnCancel">Cancel</button>
<button id="btnSave" onclick="validateForm(return false;);">Save</button>
</form>
</div>
</div>
<script type="text/javascript">
var nameValidation;
var modal = document.getElementById('modalAddNewTest');
var btn = document.getElementById("btnAddNew");
var btnSave = document.getElementById("btnSave");
var span = document.getElementsByClassName("close")[0];
btn.onclick = function() {
modal.style.display = "block";
}
span.onclick = function() {
modal.style.display = "none";
}
function validateForm() {
var x = document.forms["formTestInfo"]["tbName"].value;
if (x == null || x == "") {
nameValidation = "Name must be filled out";
document.getElementById("nameVal").innerHTML = nameValidation;
}
else
{
var table = document.getElementById("results");
var name = document.getElementById("tbName").value;
var e = document.getElementById("ddlTest");
var selectedTest = e.options[e.selectedIndex].value;
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1;
var yyyy = today.getFullYear();
if(dd<10) {
dd='0'+dd
}
if(mm<10) {
mm='0'+mm
}
today = mm+'/'+dd+'/'+yyyy;
//In the first step using InsertRow function you are creating a first row i.e tr
var row = table.insertRow(table.rows.length);
//In the second step you create a cell i.e td dynamically
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
// Here in step 3 you can add data to your cells from the modal popup inputs(According to your logic)
cell1.innerHTML = today;
cell2.innerHTML = name;
cell3.innerHTML = selectedTest;
}
}
</script>
</body>
</html>
我希望这对你有帮助。
添加到你的button role="button" type="button"。不确定,但一些浏览器处理按钮作为"提交"类型,如果插入根据我的经验,旧的maxthon浏览器
<button id="btnSave" role="button" type="button" onclick="validateForm(return false;);">Save</button>
,你需要修复你正在调用的内联js函数。你有打字错误,你在返回false和…你可以去掉"return false"
试着这样做:
<button id="btnSave" role="button" type="button" onclick="validateForm();">Save</button>
太糟糕了!
最好的方法是从按钮中删除onclick属性,并使用下面的代码:
btnSave.onclick = function() {
validateForm();
return false;
}
工作得很好,你的代码中会少一些意大利面条。
你也可以使用addEventListener,如果你需要更多的功能。https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
相关文章:
- 如何在脚本上添加新行
- 在不刷新整个网格的情况下,向Asp.net网格视图添加新行
- dhtmlx添加新行并启动单元格编辑器
- 如何在Google Geochart图表的工具提示文本中添加新行
- 如何在javascript中每次添加新行时都增加ordre值
- 两个表添加新行按钮-冲突
- 在Spring.message属性中添加新行时出错
- 使用Javascript在文本区域中添加新行
- 在java脚本的第一行之前添加新行
- sails.js更新或添加新行
- 使用ajax向表中添加新行
- 使用一些默认值在剑道网格中添加新行
- 添加新行后无法“刷新”灯丝组表锯响应表
- JQuery 数据表添加新行,如果该行已经存在,请将其删除并为该 ID 插入新行
- 续集 - 向表添加新行并关联表
- 如何在 jQuery 函数 text() 中添加新行
- 在表格顶部添加新行
- 添加新行动态引导日期时间选择器不起作用
- 如何在不影响 Jquery 数据表中其他行的情况下删除选定的现有数据并添加新行
- 分机.js确认方法添加新行字符