【问题标题】:How do I prevent a pre-set INPUT value from being changed?如何防止更改预设的 INPUT 值?
【发布时间】:2014-03-22 23:59:54
【问题描述】:

我有一个表单,其中一些字段是通过从数据库加载信息来完成的。这些字段可能因一个帐户而异。

提交表单后,任何数据库信息都将与表单中输入的新信息一起发送。

但是,用户可以更改(在屏幕上)从数据库输入的信息,虽然这些更改没有提交(我的数据库中的 $Xvariables 覆盖了已发布的 $variables),但我希望他们恢复屏幕上的数据返回数据库值。

这是我目前拥有的一个示例,但它不起作用......

  <input type="text" name="firstname" size="25" tabindex="4" onchange="if($xfirstname<>'') this.value=$xfirstname" value="<?php echo $firstname;?>"/>

或者更好的是,如果有办法,如果它们具有从数据库加载的值,我怎样才能使它们保持不变?

【问题讨论】:

  • 设置readonly 属性以防止用户输入它们,或设置disabled 以防止它们与表单数据的其余部分一起发送。 (但请注意,这不会阻止用户以任何方式向您的脚本提交任何类型的数据,因此必须进行服务器端验证。)
  • 用一个简单的文本代替 怎么样?
  • 第二个@Ivan 的建议,如果您不希望任何用户输入,请不要使用input
  • 一些用户需要输入 - 这完全取决于从数据库加载的内容
  • 在评论中你说“一些用户需要输入”。您应该在问题本身中指定此类内容,并指定究竟应该发生什么以及在什么条件下发生。也许您只是说如果一个字段具有value 属性,则该字段应该是只读的?

标签: javascript php html forms input


【解决方案1】:

只需将readonly="readonly" 放在输入&lt;&gt; 标记中或放置disabled="disabled"

示例 &lt;input type="text" name="firstname" size="25" tabindex="4" onchange="if($xfirstname&lt;&gt;'') this.value=$xfirstname" value="&lt;?php echo $firstname;?&gt;" readonly="readonly" /&gt;

【讨论】:

  • 但是OP说不会提交。
【解决方案2】:

保留这个:

<input type="text" name="firstname" size="25" tabindex="4"
 value="<?php echo $firstname;?>"/>

添加这个:编辑:抱歉没有看到它在输入元素上没有 ID 使用这个:

<script>
if($('input[name="firstname"]').val().length > 0)
{
$('input[name="firstname"]').attr("disabled", true);
}
</script>

结果:http://jsfiddle.net/4wt9r/6/

但请记住,客户端上的任何内容都可以更改,您真正的过滤/身份验证必须在服务器上完成。

【讨论】:

  • hmmmm,虽然我看到这两个都在 jsfiddle 上工作,但它们都在我的网站上失败了!!!! :(
  • 如果我让它工作,另一件事是,如果有人输入一个验证失败的值,这会阻止他们更改它吗?
  • 确保包含 jquery 库
  • omg,我正在努力学习 html、javascript、php 和 css,并尽量不让他们感到困惑,哈哈 - 会调查一下,谢谢
猜你喜欢
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
  • 2018-08-12
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多