【问题标题】:Transform form Input field into read-only after data is entered输入数据后将表单输入字段转换为只读
【发布时间】:2021-10-05 15:21:56
【问题描述】:

我正在尝试找出是否可以使用以下逻辑更新以下代码:
输入文本后,将字段设为只读。
基本上,它是一个签名字段,我们希望一旦有人输入值就被锁定。

<strong>Logistics Chief:</strong></span></td>
            <td><span style="font-size: 10pt; font-family: Arial;"><input type="text" style="width: 200px; height: 22px;" value="" fieldname="Field_31"><br>

【问题讨论】:

  • 当然可以,但是你试过什么?
  • “一旦有人输入一个值” - 添加第一个字符后?离开表格后?提交表单后?
  • 点击开箱后。所以输入名称,点击出来,框现在是只读的
  • 我只是尝试使用“readonly”命令(我是 HTML 的新手,所以请原谅我的无知)我想我在玩,看看是否有任何条件函数,如 excel ,但是我可以让表单元素以适合签名框等的方式运行。非常感谢您抽出宝贵的时间!

标签: javascript html forms dom-events


【解决方案1】:

这可以通过一些普通的 JavaScript 来完成。这里有 2 个函数用于锁定和解锁输入字段。使用输入的 HTML 属性 onfocusout="" 我们访问事件以使字段不聚焦,也就是离开字段的编辑模式。然后我添加了一个按钮以再次解锁它,因为如果他/她设法将 type-o 放在那里并且没有其他方法可以修复它,用户会非常恼火。

HTML:

<td>
    <span style="font-size: 10pt; font-family: Arial;">
        <input id="signature_input" onfocusout="lock_signature_field()" type="text" style="width: 200px; height: 22px;" fieldname="Field_31">
        <br><br>
    </span>
</td>
<td>
    <button type="button" name="button" onclick="unlock_signature_field()">Edit Signature</button>
</td>

这里还是同样的 HTML,更简洁,更易于复制粘贴:

<td>
    <span>
        <input id="signature_input" onfocusout="lock_signature_field()" type="text"fieldname="name">
        <br><br>
    </span>
</td>
<td>
    <button type="button" name="button" onclick="unlock_signature_field()">Edit Signature</button>
</td>

JS(放在页面底部的前面):

<script type="text/javascript">

    // set reference to the dom input field
    const signatureField = document.getElementById("signature_input");

    function lock_signature_field() {
        signatureField.setAttribute('readonly', true);
        console.log('Element was locked.'); // you can remove this debug-line if you want.
    }

    function unlock_signature_field() {
        signatureField.removeAttribute("readonly"); // we have to remove the attribute alltogether, cause setting it to false, will do nothing in most browsers.
        console.log('Element was unlocked.'); // you can remove this debug-line if you want.
    }

</script>

这里是jsfiddle

【讨论】:

  • 不用担心。此示例适用于每次用户使用鼠标离开字段或使用键盘上的选项卡离开时。它可以设置为只有在用户离开场地一定秒数后才锁定计时器。但是对于这一领域,它可能还可以。祝你好运。
  • @vmackey 如果它是最佳答案,请考虑通过单击复选标记来接受此答案:D
猜你喜欢
  • 2012-09-27
  • 1970-01-01
  • 2019-09-30
  • 2021-02-27
  • 1970-01-01
  • 2011-01-01
  • 1970-01-01
  • 2017-05-02
  • 1970-01-01
相关资源
最近更新 更多