表单输入onload替换

时间:2015-06-10 20:28:00

标签: javascript jquery django

我有以下代码:

<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 formset,每个生成的表单都有不同的前缀)。

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

提前致谢。

2 个答案:

答案 0 :(得分:3)

输入元素上没有load事件。您可以向input元素添加一个类,并使用css类选择器将其作为目标。

<强> HTML

<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,那么你可以使用属性以选择器结束。

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

答案 1 :(得分:1)

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

<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()方法传递给immediate函数,以使其在加载和更改时都能正常工作。