如何从td中删除显示的值并替换为输入字段
How to remove displayed value from td and replace with input field?
我有一个显示名称和输入字段的动态表。若名称显示在表格行中,则用户可以选择删除该名称。我知道如何从特定的表行中删除值,但我在用应该与其他可用字段相同的输入字段替换同一位置时遇到了问题。这是我迄今为止的代码:
<cfoutput>
<tr>
<td>#TimeFormat(CurrentTime,'hh:mm tt')#</td>
<td onClick="deleteSlot('#TimeSlotID#')">
<cfif UserID GT 0>
<label>
<div id="#TimeSlotID#">
(<b>#First# #Last#</b>)
<img src="images/delete.png"/>
</div>
</label>
<cfelseif UserID EQ -1>
<label>
<input type="text" name="email" id="email#currentRow#" class="email">
<input type="button" name="slot" id="slot#currentRow#" class="slot" value="Save" onClick="saveTime(this,'#TimeSlotID#')" style="display: none">
</label>
</cfif>
</td>
</tr>
</cfoutput>
JavaScript://如果用户开始在可用字段中键入,此代码将显示保存按钮。
$(document).ready(function() {
$(".email").keyup(function(e) {
if($(this).val() != '') {
$(".email").not(this).attr('disabled','disabled');
$(this).next(".slot").show();
} else {
$(".email").removeAttr('disabled');
$(this).next(".slot").hide();
}
});
});
//这是我试图从单元格中删除名称并替换为输入字段的代码
function deleteSlot(TimeSlotID){
$('#' + TimeSlotID).replaceWith('<label><input type="text" name="email" id="email#currentRow#" class="email"><input type="button" name="slot" id="slot#currentRow#" class="slot" value="Save" onClick="saveTime(this,'#TimeSlotID#')" style="display: none"></label>');
}
我目前在deleteSlot函数中使用的这段代码确实将name替换为输入字段,但如果我开始在该字段中键入,我就不会像其他字段中那样显示Save按钮。我不能100%确定这是否可以按照我开始的方式完成,或者我应该使用其他方法。我尝试了追加,但没有成功,每次点击都会给我额外的输入字段。如果有人知道解决这个问题的更好方法,请告诉我。
我认为需要重新应用事件keyup:
$(document).ready(function() {
applyKeyUp();
});
function applyKeyUp() {
$(".email").keyup(function(e) {
if($(this).val() != '') {
$(".email").not(this).attr('disabled','disabled');
$(this).next(".slot").show();
} else {
$(".email").removeAttr('disabled');
$(this).next(".slot").hide();
}
});
}
function deleteSlot(TimeSlotID){
$('#' + TimeSlotID).replaceWith('<label><input type="text" name="email" id="email#currentRow#" class="email"><input type="button" name="slot" id="slot#currentRow#" class="slot" value="Save" onClick="saveTime(this,'#TimeSlotID#')" style="display: none"></label>');
applyKeyUp();
}
问题在于您传递的id的怪异。由于id
前面已经有'#'
,jquery选择器将无法应用target by id
。如果您确实需要在id前面使用'#'
,那么您需要应用id equal to
选择器。
$('#' + TimeSlotID)
应该是
$("[id = '" + TimeSlotID + "']")
示例:https://jsfiddle.net/DinoMyte/6d5ry9br/5/
相关文章:
- Qualtrics(Javascript)-矩阵表-用下拉列表替换文本输入字段
- SQL查询-替换字段名称中的句点
- 将数组复制到另一个数组中,并将缺少的字段替换为 null
- 当我尝试打印到文本区域字段中时,数据被[对象节点列表]替换
- 替换输入字段的文本会移动其位置
- 单击链接并将隐藏字段中的文本插入输入字段超过 1 次,然后替换输入字段中的文本
- 如何在不替换现有字段的情况下更新MongoDB中的记录
- 如何将选择列表添加到自定义实体的案例表单中(注意:替换普通查找字段)
- 是否可以替换输入字段中每个字符的颜色
- 如何从td中删除显示的值并替换为输入字段
- 简单的Javascript输入表单,具有动态替换的必需字段消息DOM
- 单击按钮时隐藏HTML表单字段,并将其替换为其他字段
- Selectiononchange事件触发javascript,提取数组值并替换隐藏字段的值
- 使用jQuery用隐藏字段动态替换复选框
- 如何在使用日期选择器时输入字段中的日期,当按键上的逗号替换为句点时
- 如何用计算替换表单输入字段
- 将隐藏字段值替换为NoUiSlider值的值,以传递到表单PHP
- 在ASP中替换字符串.. NET隐藏字段通过JavaScript
- 将HTML元素文本替换为FORM,无法单击进入输入字段
- JavaScript输入日期替换字段(mm/dd/yyyy)为当前日期