我面临着一个关于使用JQuery动态设置输入值的非常奇怪的问题。
目标输入的初始状态如下:
<input type="text" id="birthdate" name="birthdate" value="" data-alt-value="0000-00-00" autocomplete="off" data-local-value="0000-00-00">
注意:输入字段是通过Joomla框架生成的(可能很重要,我不知道)。
如果我以常规方式设置值:
$('[name="birthdate"]').val("1986-01-21");
我得到了这个结果:
<input type="text" id="birthdate" name="birthdate" value="" data-alt-value="1986-01-21" autocomplete="off" data-local-value="1986-01-21">
未设置value属性。所以我尝试了这种方式:
$('[name="birthdate"]').attr('value', "1986-01-21");
给出了预期的结果:
<input type="text" id="birthdate" name="birthdate" value="1986-01-21" data-alt-value="1986-01-21" autocomplete="off" data-local-value="1986-01-21">
但无论出于何种原因,在提交表单后该值为空。 更奇怪的是,如果我将焦点放在birthdate字段(通过点击它)然后提交表单,则值正确传递。
我想指出,只有处理日期或日期时间值的输入字段才会出现此问题。
有人可以帮助我吗?
答案 0 :(得分:2)
提交表单时,发送的参数来自输入字段的value
属性。 value
属性用作value
属性的初始值,但更改属性不会更改属性(该属性会单独保存,以便格式为reset()
{{ 1}}方法可以恢复它。)
要更改提交的内容,您只需更改属性,而不是属性。当你在控制台中查看DOM时,你不会看到这种变化。
有关属性和属性之间关系的更多信息,请参阅Why should HTML DOM properties be reflected into HTML DOM attributes as well?。某些属性和属性与其他属性和属性的工作方式略有不同。