如何恢复文本框数据
How to restore Textbox Data
我有一个小要求,
我们已经恢复了之前清除的文本框数据。
下面是我的HTMl代码
<table>
<tr><td><input type="textbox"></td></tr>
<tr><td><input type="checkbox"></td></tr>
</table>
这是我的JQuery代码
$('TABLE TR TD').find(':checkbox').change(function()
{
if($(this).prop('checked'))
{
$(this).parents('TR').siblings('TR').find('input').val("")
}
if(!$(this).prop('checked'))
{
$(this).parents('TR').siblings('TR').find('input').val(?)
}
});
我的要求是清除文本框的内容,如果checkbox被选中。如果我取消选择它,文本框应该恢复与以前的数据。
使用全局变量存储之前的数据-
var prevData;
然后这样修改你的代码-
$('TABLE TR TD').find(':checkbox').change(function()
{
if($(this).prop('checked'))
{
var $element = $(this).parents('TR').siblings('TR').find('input')
prevData = $element.val();
$element.val("");
}
else
{
$(this).parents('TR').siblings('TR').find('input').val(prevData);
}
});
当复选框被选中时,在清除该值之前,使用jQuery .data()
API存储它。
<table>
<tr><td><input type="text"></td></tr>
<tr><td><input type="checkbox"></td></tr>
</table>
$('input:checkbox').change(function() {
var input = $(this).closest('table').find('input[type="text"]');
if ($(this).prop('checked')) {
input.data('text', input.val());
input.val('');
} else {
input.val(input.data('text'));
}
});
一个演示,如果有多个对,只要它们存在于单独的<table>
父节点中,它就可以工作。如果不是这种情况,你可以改变查找器来获取前一个兄弟。不使用全局变量,这不是真正的最佳实践-如何避免在JavaScript中使用全局变量?
编辑:更新的演示基于您的其他问题Keydown事件不能正常工作,但这只适用于关键事件,而不是如果有人将文本粘贴到<input>
。
我建议一些不太依赖于标记保持不变的东西(尽管确实要求复选框跟随文本输入):
var prevData, textInputIndex;
$('input:checkbox').change(
function(){
thisIndex = ($(this).index('table input') - 1);
textInput = $('table input').eq(thisIndex);
if ($(this).is(':checked')) {
prevData = $(textInput).eq(thisIndex).val();
$(textInput).eq(thisIndex).val('');
}
else {
$(textInput).eq(thisIndex).val(prevData);
}
});
JS Fiddle demo.
编辑以消除只有一个变量来存储文本输入值的问题:
var $textInputs = $('table input:text');
var prevData, textInputIndex, affectedTextInputIndex, textInputValues = [];
$('input:checkbox').change(
function(){
affectedTextInputIndex = $(this).index('table input') - 1;
textInputIndex = $('table input').eq(affectedTextInputIndex).index('table input:text');
if ($(this).is(':checked')) {
textInputValues[textInputIndex] = $textInputs.eq(textInputIndex).val();
$textInputs.eq(textInputIndex).val('');
}
else {
$textInputs.eq(textInputIndex).val(textInputValues[textInputIndex]);
}
});
JS Fiddle demo.
编辑以删除table
中包含input
元素的明确要求:
var $textInputs = $('input:text');
var prevData, textInputIndex, affectedTextInputIndex, textInputValues = [];
$('input:checkbox').change(
function(){
affectedTextInputIndex = $(this).index('input') - 1;
textInputIndex = $('ul input').eq(affectedTextInputIndex).index('input:text');
if ($(this).is(':checked')) {
textInputValues[textInputIndex] = $textInputs.eq(textInputIndex).val();
$textInputs.eq(textInputIndex).val('');
}
else {
$textInputs.eq(textInputIndex).val(textInputValues[textInputIndex]);
}
});
JS Fiddle demo.
引用:
-
:checkbox
选择器 -
change()
. -
is()
. -
:checked
选择器。 -
index()
. -
val()
.
相关文章:
- 使用敲除绑定多个文本数据
- Node.js向/从MongoDB发送/返回纯文本数据的最基本方法是什么
- 从 jquery 更新 html 文本数据
- 我将文本数据转换为jquery对象,但创建的文本数据不是我期望的
- 从当前页面之外的系统剪贴板获取最后的“文本”数据
- 如何从另一个网站或时间获取文本/数据
- 从 json 获取文本数据
- Angularjs文本/数据未显示
- 从<p>标记到twitter小部件文本数据属性
- 通过http请求将java代码中的连续文本数据发送到html
- 仅当关联复选框选中MySql时才插入输入文本数据
- 将纯文本数据转换为json
- 关于在数据库(SQL)中保存文本数据的要求
- 文本数据和文件的POST
- 如果当前文本数据=任何其他文本数据,则.
- HTML按钮将输入文本数据发送到ASP端
- 用IE、ADODB从base64文本数据中保存二进制文件.流式传输到硬盘
- 提交文本-数据和文件的php脚本与jquery
- 删除HTML文件中的一些文本数据
- HTML将文本数据转换为文件并上传