表单输入加载替换

Form input onload substitute

本文关键字:替换 加载 输入 表单      更新时间:2023-09-26

我有以下代码:

<input id="id_sf-0-use_incident_energy_guess" 
name="sf-0-use_incident_energy_guess" 
onchange="show_hide_guess(this.id);" 
onload="show_hide_guess(this.id);" 
type="checkbox">

问题是onload.它在输入字段中不起作用...

我不能使用jquery $(document).ready因为我还不知道这个表格的 id......(这是一个 Django 表单集,每个生成的表单都有不同的前缀)。

你知道我该怎么解决这个问题吗?

提前谢谢。

输入元素上没有load事件。您可以将类添加到输入元素并使用 css 类选择器将其定位。

目录

<input id="id_sf-0-use_incident_energy_guess" class="input-energy-guess"
  name="sf-0-use_incident_energy_guess" 
  onchange="show_hide_guess(this.id);"
  type="checkbox">

Js

$(function () {
    //Now you can access the input using class selector
    $('.input-energy-guess').each(function () {
       show_hide_guess(this.id);
    });
});

如果无法添加类或修改 html,则可以使用属性 end with selector。

$(function () {
    $('name$=”use_incident_energy_guess”').each(function () {
       show_hide_guess(this.id);
    });
});

我会使用即时函数来模拟加载事件。你可以试试这个:

<input id="id_sf-0-use_incident_energy_guess" 
    name="sf-0-use_incident_energy_guess" 
    onchange="show_hide_guess(this.id);" 
    type="checkbox">
<script>
    function show_hide_guess(id) {
        console.log("get: " + id);
        // your code goes here
    }
    (function(show_hide_guess) {        
        var i, inputs = document.getElementsByTagName('input'),
            len = inputs.length;
        for (i=0; i<len; i++) {
            var input = inputs[i],
                id = input.getAttribute("id");
            show_hide_guess(id);
        }
    })(show_hide_guess);
</script>

注意:您必须将 show_hide_guess() 方法传递给即时函数才能使其在加载和更改时工作。