首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成的输入和默认值

问生成的输入和默认值
EN

Stack Overflow用户
提问于 2014-04-04 17:38:16
回答 4查看 58关注 0票数 2

我在我的应用程序的表单中使用了一些生成的input元素,并且我尽量保持它的简单性,这就是为什么我坚持对它们进行原生表单重置。

在节点创建时,“默认值”似乎被绑定到元素上。例如:

代码语言:javascript
复制
var inputOne = $('<input value="Original value">');
var inputTwo = $('<input>').val('Original value');
myForm.append([inputOne, inputTwo]);

在这个示例(这是小提琴)中,只有输入模板才会正确地重置,但是我需要使用更像在输入2中进行的操作,因为我在输入模板上有不同的类型,这些模板比给出的示例中的模板复杂得多,因此与该值连接的简单字符串并不是一个可行的选项。

我考虑在输入模板中使用占位符,例如:

代码语言:javascript
复制
var myInputTemplate = '<input value="%val" data-foo="%foo" data-bar="%bar">';

var newInputNode = createNodeFromTemplate(myInputTemplate , {
  val: "Original Value",
  foo:"My Foo",
  bar:"My Bar",
});

但这是最后的手段,记住我只是尽量保持简单。

问题:

我在规范中读过一次,对于每种元素类型,默认值的定义是不同的,但没有给出进一步的解释。

如何为输入定义默认值?!

有一些解决办法来“重新定义”生成的输入中的默认值?!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-04 17:54:39

可以在任何时候设置默认值。

代码语言:javascript
复制
inputTwo.prop('defaultValue','some other value');

但这并不会更新实际值属性,只有重置窗体时使用的默认值,设置值属性的首选方法仍然是val(),因为它设置了本机element.value属性。

代码语言:javascript
复制
inputTwo.val('value');

而且在大多数情况下,您希望更改属性,而不是属性,因为这可能会导致其他许多问题。

小提琴

还可以通过传递对象来创建元素。

代码语言:javascript
复制
var params = {
    value   : 'Original value',
    id      : 'myID',
    'class' : 'myClass' // note the quotes, class is a reserved word in JS
}

$('<input />', params);
票数 1
EN

Stack Overflow用户

发布于 2014-04-04 17:48:19

$('input').val(something)和$('input').attr('value', something)是有区别的。前者设置输入的当前值。后者更改输入的value属性,该属性包含控件的初始值。这使得form.reset能够正确地处理它--就像在这个演示中所看到的那样。

票数 1
EN

Stack Overflow用户

发布于 2014-04-04 17:49:07

jQuery的.val()不改变输入的value属性,只更改其内容。使用.attr()来更改value属性,提供您想要的功能。

代码语言:javascript
复制
$('<input>').attr('value', 'Original value');

http://jsfiddle.net/yAE7h/2/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22869433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档