1

我有这个简单的网络表单

<form id="MyFormDiv" method="post"> 
     <input type="number" name="cmp_no" id="id_cmp_no">
     <input type="text" name="cmp_lname"  maxlength="40 id="id_cmp_lname">  
     <input type="submit" name="submit" value="Save" id="submit-id-submit">
</form>

此表单将用于添加和更新。

插入时我没有问题,但更新时我不想让用户更新或更改其项目的值id= "id_cmp_no"

我使用 javascript 代码将其设置为readonly propertytrue但这不是 100% 的解决方案,因为用户可以使用浏览器检查工具并查看页面源并在提交表单之前更改它的值,因此readonly property没有用。

我可以覆盖它的onchange事件以防止它的值发生变化,即使page source使用检查工具改变了值。

任何人都可以帮助,提前谢谢你

4

2 回答 2

0

没有什么可以阻止用户在浏览器中更改值,您可以尝试上述答案中给出的解决方案,但要小心,用户可以通过使用 firebug/inspect element/whatever 挖掘出多种方法来做到这一点。

我们可以做的是在服务器端检查我们的值并在它们不匹配时提示用户。

又喊了..

永远不要相信/依赖客户....

于 2020-08-30T08:03:54.973 回答
0

如果用户足够熟练地打开开发工具并从那里更改值,那么他们很可能还可以更改任何阻止编辑只读值的 JS 代码。

因此,没有什么可以替代正确的服务器端验证。

您可以检查表单的事件处理程序中的值是否被更改onsubmit(见下文),但请记住我和许多评论者在上面所说的内容。

$("form").on("submit", function(e) {
  //check value of the input
  if(this.someInput.value != 1) {
     //do something here
     //return false; if you want to block submit
  }
  return true;
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form id="form">
  <input type="number" name="someInput" readonly value="1"/>
  <button type="submit">Submit</button>
</form>

于 2020-08-29T23:38:16.730 回答