【问题标题】:How to restore default value of text field in jQuery?如何在jQuery中恢复文本字段的默认值?
【发布时间】:2014-03-24 10:59:26
【问题描述】:

我有一个包含一些<input type="text"> 字段的表格的页面。我在每个字段旁边都有一个按钮。我允许用户更改输入字段的文本。但是当用户点击输入框旁边的按钮时,对应的输入框的值需要恢复为默认(之前的)值。

我尝试创建一个以索引作为输入字段名称的数组。该数组可以存储默认值,并且可以轻松检索并恢复到其相应的字段。我尝试使用keyup(function() 执行此操作,但我知道每次按下键都会触发。

这是我的 HTML;

<input class="zx" type="text" name="qwer" value="Google" /><button class="cncl">X</button><br />
<input class="zx" type="text" name="qwer" value="Yahoo" /><button class="cncl">X</button><br />
<input class="zx" type="text" name="qwer" value="Bing" /><button class="cncl">X</button><br />
<input class="zx" type="text" name="qwer" value="Ask" /><button class="cncl">X</button><br />

Here 是小提琴。

如何恢复字段的默认值?

【问题讨论】:

  • 以前的值是什么意思?输入创建时的原始值
  • 为什么不只是$('form')[0].reset()
  • 为什么不使用占位符属性并在检查提交的值是否有值后进行表单处理

标签: javascript jquery forms restore


【解决方案1】:

可以使用输入元素的defaultValue属性

$('.cncl').click(function(){
    $(this).prev().val(function(){
        return this.defaultValue;
    })
})

演示:Fiddle

【讨论】:

  • 这似乎是“最干净”的方式。我最初考虑将它保存到一个变量然后恢复它,但它似乎比必要的工作更多。
  • 有没有办法使用类名实现相同的功能?
  • 类名是什么意思
  • 我的意思是,我怎样才能在这个小提琴中实现这个(我稍微改变了你的小提琴,增加了一个按钮)jsfiddle.net/blasteralfred/VQE6b/2
  • @blasteralfredΨ 你能把每组控件包装在另一个元素中吗
【解决方案2】:

试试这个,使用.attr('value')获取默认值:

$('.cncl').on('click', function () {
    $(this).prev().val($(this).prev().attr('value'));
});

DEMO

【讨论】:

  • 你需要使用.prevAll('.zx:first') 然后像这样jsfiddle.net/VQE6b/3
  • 我得到function (){ return this.defaultValue; } 作为值:(
  • 很好的解决方案。它的工作!并感谢您的演示。非常有帮助 +++
【解决方案3】:

我过去做过类似的事情。我将默认值存储在 html-tag 本身的属性中。

<input class="zx" type="text" name="qwer" default-value="Google" value="Google" />

当你想恢复它时你可以执行

$('selector').val($('selector').attr('default-value'));

【讨论】:

  • 这很整洁。它允许开发人员设置一个默认值,而不是初始值。但这会令人困惑,因为我无法想象人们会想要这个功能的情况。仍然 +1。
  • 在我的例子中,它是一个包含大量来自服务器端值的输入的表单。然后,当用户更改值时,他/她可以单击撤消将值恢复为保存在数据库中的值。
猜你喜欢
  • 1970-01-01
  • 2018-07-06
  • 2020-07-27
  • 1970-01-01
  • 2022-07-29
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 1970-01-01
相关资源
最近更新 更多