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
就足够了:)