从 HTML 表单的输入中获取修改后的文本

Posted

技术标签:

【中文标题】从 HTML 表单的输入中获取修改后的文本【英文标题】:Getting a modified text from an input in an HTML form 【发布时间】:2021-06-29 12:40:46 【问题描述】:

我需要为酒店网站制作预订表格。它需要获取一些基本信息并将其发送到我的预订引擎。

我的问题是我的预订引擎需要以 mm/dd/yyyy 格式的文本接收任何日期。不幸的是,大多数欧洲用户不习惯这种格式,因为他们使用 dd/mm/yyyy。

所以,我需要用户在 dd/mm/yyyy 中写入并查看他们的输入信息,但预订引擎应该以 mm/dd/yyyy 的形式接收它。

这是我迄今为止尝试过的:

<form action="..." onsubmit="return ChangeDate()" id="resform" name="resform" target="_blank" method="get">

<input type="text" name="DateIn">
<input type="submit" value="Submit" />

</form>
<script type="text/javascript" language="javascript">

function ChangeDate() 
    var x = document.forms["resform"["DateIn"].value.split('/');
    return document.forms["resform"]["DateIn"].innerhtml = x[1]+'/'+x[0]+'/'+x[2];
    
</script>

我不断得到 dd/mm/yyyy 格式。

【问题讨论】:

你不能使用date输入元素而不是文本吗? yyyyyy 的有效年份是多少??? 那是个错误!这是yyyy 【参考方案1】:

最好使用:

&lt;input type="date" id="dateIn"/&gt;

除非你创建了一个JS函数来阻止他,否则用户可以在文本字段中输入他想要的任何内容。

另外,在chrome,edge,safari...中,浏览器的日期输入格式是mm/dd/yyyy,而Firefox浏览器是dd/mm/yyyy。

【讨论】:

【参考方案2】:

如果您要使用date 类型的输入字段,然后使用Intl.DateTimeFormat 类来格式化您的输出,您应该能够将其显示为一件事并将值作为另一件事发送。我对问题中的yyyyyy 以及预订引擎所期望的格式感到有些困惑,但希望这能让您深入了解如何实现目标。

const oForm=document.forms.resform;
const oDate=oForm.DateIn;
const oBttn=oForm.querySelector('[type="submit"]');


oBttn.addEventListener('click',e=>
  if( oDate.value!='' )
    const date=new Date( oDate.value );
    const opts= year:'numeric', month:'2-digit', day:'2-digit' ;
    const formatted=new Intl.DateTimeFormat( 'en-US', opts ).format( date );
    
    console.info( 'Formatted date value: %s',formatted ) 
 
);
<form name='resform' target='_blank' method='get'>
    <input type='date' name='DateIn' />
    <input type='submit' />
</form>

【讨论】:

到目前为止,我无法让那个 javascript 工作,但我想我会得到它,感谢你,我很感激! 当你说你不能让它工作你是什么意思?输出格式不正确还是您希望更改格式? 预订引擎现在得到 yyyy-mm-dd,我猜这意味着 javascript 没有正确连接到我的 HTML。我曾尝试将其作为脚本包含在 js 模板中,但无济于事。我试图弄清楚我做错了什么......我几乎不知道javascript,但你的代码在你的评论中完美运行。

以上是关于从 HTML 表单的输入中获取修改后的文本的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PHP 输入表单中获取城市的谷歌地图?

从表单中获取 .innerhtml 和警报文本

表单事件(jQuery)

html 基本的html模板,用于获取输入文本并将文本传输到另一个表单。

如何在同一个 html 表单中有不同的输入文本样式?

使用提供 HTML 输出的文本格式选项创建表单输入