表单提交后的空值

问题描述 投票:0回答:1

关于使用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字段(通过点击它)然后提交表单,则值正确传递。

我想指出,只有处理日期或日期时间值的输入字段才会出现此问题。

有人可以帮助我吗?

jquery forms
1个回答
2
投票

提交表单时,发送的参数来自输入字段的value属性。 value属性用作value属性的初始值,但更改属性不会更改属性(该属性单独保存,以便表单的reset()方法可以恢复它)。

要更改提交的内容,您只需更改属性,而不是属性。在控制台中查看DOM时,您不会看到此更改。

有关属性和属性之间关系的更多信息,请参阅Why should HTML DOM properties be reflected into HTML DOM attributes as well?。某些属性和属性与其他属性和属性略有不同。

© www.soinside.com 2019 - 2024. All rights reserved.