Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 生成的输入和默认值_Javascript_Jquery_Html - Fatal编程技术网

Javascript 生成的输入和默认值

Javascript 生成的输入和默认值,javascript,jquery,html,Javascript,Jquery,Html,我在我的应用程序的表单中使用了一些生成的输入元素,我试图让它尽可能简单,这就是为什么我坚持使用原生表单重置 “默认值”似乎在节点创建时绑定到元素。例如: var inputOne = $('<input value="Original value">'); var inputTwo = $('<input>').val('Original value'); myForm.append([inputOne, inputTwo]); var inputOne=$('');

我在我的应用程序的表单中使用了一些生成的
输入
元素,我试图让它尽可能简单,这就是为什么我坚持使用原生表单重置

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

var inputOne = $('<input value="Original value">');
var inputTwo = $('<input>').val('Original value');
myForm.append([inputOne, inputTwo]);
var inputOne=$('');
var inputWO=$('').val('原始值');
myForm.append([inputOne,inputwo]);
在这个示例()中,只有input one可以正确重置,但是我需要使用与input two类似的方法,因为我在输入模板上有不同的类型,这些类型比给定的示例中复杂得多,因此使用值的简单字符串连接不是一个非常可行的选项

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

var myInputTemplate = '<input value="%val" data-foo="%foo" data-bar="%bar">';

var newInputNode = createNodeFromTemplate(myInputTemplate , {
  val: "Original Value",
  foo:"My Foo",
  bar:"My Bar",
});
var myInputTemplate='';
var newInputNode=createNodeFromTemplate(myInputTemplate{
瓦尔:“原值”,
福:“我的福”,
酒吧:“我的酒吧”,
});
但这是最后的办法,记住我正试图让它尽可能简单


问题:

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

如何为输入定义默认值


有一些变通方法可以“重新定义”生成的输入中的默认值

$('input').val(某物)
$('input').attr('value',某物)
之间有区别。前者设置输入的当前值。后者更改输入的
属性,该属性包含控件的初始值。反过来,它允许通过
form.reset
-正确地处理它,如所示。

$('input').val(something)
$('input').attr('value',something)
之间存在差异。前者设置输入的当前值。后者更改输入的
属性,该属性包含控件的初始值。反过来,它允许通过
form.reset
-正确地处理它,如中所示。

jQuery的
.val()
不会更改输入的
属性,只更改其内容。改为使用
.attr()
更改value属性以提供所需的功能

$('<input>').attr('value', 'Original value');
$('').attr('value','Original value');

jQuery的
.val()
不会更改输入的
属性,只更改其内容。改为使用
.attr()
更改value属性以提供所需的功能

$('<input>').attr('value', 'Original value');
$('').attr('value','Original value');

您似乎将
属性与
属性混淆了

输入元素有一个
属性,该属性是默认情况下显示并重置为的值。它对应于
defaultValue
property

它们还有一个
value
属性,该属性包含当前值,可用于设置新值

在jQuery中,
.val()
引用的是属性
,而不是属性

然后,如果要获取/设置默认值,请使用

       |            Get              |                 Set
---------------------------------------------------------------------------
JS     | input.getAttribute('value') | input.setAttribute('value', newVal)
jQuery | $input.attr('value')        | $input.attr('value', newVal)

JS     | input.defaultValue          | input.defaultValue = newVal
jQuery | $input.prop('defaultValue') | $input.prop('defaultValue', newVal)
       |            Get              |                 Set
---------------------------------------------------------------------------
JS     | input.value                 | input.value = newVal
jQuery | $input.prop('value')        | $input.prop('value', newVal)
jQuery | $input.val()                | $input.val(newVal)
否则,如果要获取/设置当前值,请使用

       |            Get              |                 Set
---------------------------------------------------------------------------
JS     | input.getAttribute('value') | input.setAttribute('value', newVal)
jQuery | $input.attr('value')        | $input.attr('value', newVal)

JS     | input.defaultValue          | input.defaultValue = newVal
jQuery | $input.prop('defaultValue') | $input.prop('defaultValue', newVal)
       |            Get              |                 Set
---------------------------------------------------------------------------
JS     | input.value                 | input.value = newVal
jQuery | $input.prop('value')        | $input.prop('value', newVal)
jQuery | $input.val()                | $input.val(newVal)

您似乎将
value
属性与
value
属性混淆了

输入元素有一个
属性,该属性是默认情况下显示并重置为的值。它对应于
defaultValue
property

它们还有一个
value
属性,该属性包含当前值,可用于设置新值

在jQuery中,
.val()
引用的是属性
,而不是属性

然后,如果要获取/设置默认值,请使用

       |            Get              |                 Set
---------------------------------------------------------------------------
JS     | input.getAttribute('value') | input.setAttribute('value', newVal)
jQuery | $input.attr('value')        | $input.attr('value', newVal)

JS     | input.defaultValue          | input.defaultValue = newVal
jQuery | $input.prop('defaultValue') | $input.prop('defaultValue', newVal)
       |            Get              |                 Set
---------------------------------------------------------------------------
JS     | input.value                 | input.value = newVal
jQuery | $input.prop('value')        | $input.prop('value', newVal)
jQuery | $input.val()                | $input.val(newVal)
否则,如果要获取/设置当前值,请使用

       |            Get              |                 Set
---------------------------------------------------------------------------
JS     | input.getAttribute('value') | input.setAttribute('value', newVal)
jQuery | $input.attr('value')        | $input.attr('value', newVal)

JS     | input.defaultValue          | input.defaultValue = newVal
jQuery | $input.prop('defaultValue') | $input.prop('defaultValue', newVal)
       |            Get              |                 Set
---------------------------------------------------------------------------
JS     | input.value                 | input.value = newVal
jQuery | $input.prop('value')        | $input.prop('value', newVal)
jQuery | $input.val()                | $input.val(newVal)

您可以随时使用设置默认值

inputTwo.prop('defaultValue','some other value');
但这不会更新实际值属性,仅更新表单重置时使用的默认值,设置值属性的首选方法仍然是
val()
,因为它设置了本机
元素.value
属性

inputTwo.val('value');
在大多数情况下,您希望更改属性,而不是属性,因为这可能会在以后导致许多其他问题

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

var params = {
    value   : 'Original value',
    id      : 'myID',
    'class' : 'myClass' // note the quotes, class is a reserved word in JS
}

$('<input />', params);
var参数={
值:“原始值”,
id:“myID”,
'class':'myClass'//注意引号,class在JS中是一个保留字
}
$('',参数);

您可以随时使用

inputTwo.prop('defaultValue','some other value');
但这不会更新实际值属性,仅更新表单重置时使用的默认值,设置值属性的首选方法仍然是
val()
,因为它设置了本机
元素.value
属性

inputTwo.val('value');
在大多数情况下,您希望更改属性,而不是属性,因为这可能会在以后导致许多其他问题

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

var params = {
    value   : 'Original value',
    id      : 'myID',
    'class' : 'myClass' // note the quotes, class is a reserved word in JS
}

$('<input />', params);
var参数={
值:“原始值”,
id:“myID”,
'class':'myClass'//注意引号,class在JS中是一个保留字
}
$('',参数);

你试过$('').attr('value','def value')?@arty是的,看小提琴…
$('',{value:'Original value'})
传递对象你试过$('').attr('value','def value')?@arty是的,看小提琴…
$('',{value:'Original value'})
传递对象谢谢!根据我的测试,在添加元素之前设置
defaultValue
就足够了:)谢谢!根据我的测试,在添加元素之前设置
defaultValue
就足够了:)