我有以下代码:
<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,每个生成的表单都有不同的前缀)。
你知道我怎么能解决这个问题吗?
提前致谢。
答案 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函数,以使其在加载和更改时都能正常工作。