表单提交后的空值

时间:2018-01-04 19:56:20

标签: jquery forms

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

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

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

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

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

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