如何在不更改输入内容的情况下更改输入值

Posted

技术标签:

【中文标题】如何在不更改输入内容的情况下更改输入值【英文标题】:How to change input Value without changing the input content 【发布时间】:2015-05-18 19:15:49 【问题描述】:

我正在更新我们创建的自定义表单类的验证过程,以便通过在我的表单输入上使用掩码来变得用户友好。

由于文件上传,我们必须通过 HTTP 请求保存表单。

在某些情况下,我们可以使用 AJAX 来保存 FORM,在这些情况下,我创建了一个根据其验证类型修改内容的方法,例如:

01/02/1234 更改为 1234-02-01 123.456,78改为123456.78

问题是当我必须通过 HTTP 请求发送它时。

示例形式:

<form id="formID" action="UrlToCRUDClass" onsubmit="return validateForm(this);">
    <input id="datefield" type="text" value="" data-valid="DATE">
</form>

我想知道如何在不更改对最终用户可见的输入值的情况下更改通过 POST 发送的值。

| 1992 年 8 月 4 日 |

我尝试过更改但没有成功:

$('#datefield').attr('value','unmaskedvalue'); //-- Post Value is 08/04/1992
$('#datefield').val('unmaskedvalue'); //-- Changes the visible content for the end-user
$('#datefield').prop('value','unmaskedvalue').attr('value','maskedvalue'); //-- Changes the visible content for the end-user

有没有其他方法不重定向,在发送之前格式化输入并且不更改输入容器内的值?

【问题讨论】:

为什么不在发送请求之前在 validateForm 中进行格式化?这样输入中的值不会改变,您仍然通过请求发送格式化数据 @epascarello 这是一个普通字段,用户可以修改它的值并且它必须是可见的,我认为这不是一个好的选择,因为我正在使用每个字段超过 30 个的表单,我认为复制一个字段(一个可见的,一个隐藏的)不是一个好的选择。 @DhirajBodicherla 这就是我想要做的,但是我将如何更改输入的值并且不更改显示给最终用户的输入值? 好吧,如果您希望用户拥有他们想要的东西,并且当表单提交时传递不同的值,那么隐藏字段是最简单的解决方案。您可以替换提交时的值。或者您可以在服务器上进行转换,这似乎是最合乎逻辑和最安全的方式。 更改生成表单的类有点复杂,如果我将表单提交更改为中间验证类并将文件信息发送到 crud 类,是否可以保留 $_FILE 信息? 【参考方案1】:

似乎我在寻找错误的问题,(我们已经有一个 php 端验证)我发送 Ajax 表单的唯一问题是输入 type=file,通过 Ajax 发送文件也解决了搜索这个问题.

我能够完成我的 Ajax 上传,这要归功于: https://***.com/questions/2320069/jquery-ajax-file-upload#=

【讨论】:

以上是关于如何在不更改输入内容的情况下更改输入值的主要内容,如果未能解决你的问题,请参考以下文章

如何在不更改选择框值的情况下选择选择框时更改html中的输入框值

如何在不更改标准输入缓冲的情况下 fork-then-execve?

如何在不更改整个文本视图颜色的情况下更改文本颜色

如何在不实际缩放的情况下更改视图缩放值?

如何在不更改页面的情况下更改内容(非散列 URL)?

如何在不更改边框的情况下进行css更改以显示所有表格内容?