我在页面中有N个带有自动生成名称的单选按钮组。
我想调用javascript函数作为checked属性的值。 编辑后排除的此行(根据返回值,需要选中或取消选中单选按钮。)
<input type="radio" name="auto_generated_name" value="some_value" checked="test_check(args);" />
并且javascript函数是
function test_check(params) {
if(conditions){
return true;
}
else
return false;
}
但这不起作用。无论我分配给'checked'属性的是什么值,无论是任何javascript函数还是任何字符串等,单选按钮都会被选中。
我如何实现目标?
编辑:
<input type="radio" name="auto_generated_name" value="somevalue" onclick="test_check(args)"/>
4个单选按钮组成一组。这样的N个无线电组以这种方式具有html类名:button_group_1,button_group_2,button_group_3,button_group_4等。
'args'需要是这些类(即单选按钮组)名称和相应的值(来自value =“1”,value =“2”,value =“3”和value =“4”)。
将在javascript函数中创建具有类名和值的Cookie。
在页面刷新时,将检查与类名匹配的cookie,并且根据相应cookie的存在,将选中或取消选中单选按钮。
如何实现目标/
答案 0 :(得分:1)
假设您使用的是jQuery,请使用更改事件:http://api.jquery.com/change/
答案 1 :(得分:0)
试试这个:
在这里,我使用名为input
的{{1}}自定义属性。在OP案例中groupname
。然后检查此属性OP的值可以指定groupname="<?php echo $radio_button_group_name; ?>"
属性值。
checked
答案 2 :(得分:0)
checked
属性只是一个布尔值,用于指示是否应选中单选按钮,不能包含脚本或脚本功能的引用。属性中的任何值都将导致单选按钮被检查。
在不知道你用什么机制检查每个单选按钮的情况下 - 我可以看到一个args
变量,但不知道它是什么类型 - 为你编写一些代码会很棘手。
如果您可以将args
转换为值数组,那么以下内容应该适用于您:
var args = new Array(true,false,true)
$.each(args, function(index, value) {
$("INPUT[type=radio]").eq(index).attr("checked", value)
});
Here's a fiddle更明确地表达我的意思
答案 3 :(得分:0)
检查此输出,有效的args是&#39; aa&#39;。
HTML:
<input type="radio" name="auto_generated_name" value="some_value1" checked="bb" />
JS:
$(function() {
var radios = $("input[type='radio']");
$.each(radios, function(index, value){
var args = value.attributes[1].nodeValue;
test_check(args, value);
})
});
function test_check(params, value){
if(params == "aa"){
$(value).attr("checked",true);
}else
$(value).attr("checked",false);
}
答案 4 :(得分:0)
您不能以这种方式使用checked
属性,因为任何值都与checked=true
相同即使只是checked
也会检查单选按钮。你应该做的是使用一个自定义属性来创建checked属性:
<input type="radio" name="auto_generated_name" value="some_value" needs_check="param">
<script>
// Do test_check on param for each input
$('input:radio').each(function()
{
var radio = $(this);
var param = radio.attr('needs_check');
var condition = test_check(param);
radio.attr('checked', condition);
});
function test_check(param)
{
return true or false based on param
}
</script>
答案 5 :(得分:0)
你的问题归结为:
如何在首次加载页面时设置复选框的值? (使用与复选框一起存储的参数)
关键见解是:
data-
属性。
<script type="text/javascript">
$(document).ready( function() { // this code runs when the page is first loaded
var radios = $("input[type='radio']"); // find all of your radio buttons
$.each(radios, function(){
var radio = $(this);
var param = radio.attr('data-param'); // retrieve the param from the object
radio.attr('checked', test_check(param) ); // set the value of the radio button
})
});
function test_check(params) {
if(conditions){
return 'checked';
}
else
return '';
}
</script>
答案 6 :(得分:0)
我遇到了同样的问题,我的结论是不要使用“”来包含一个函数。
正确:
<input type="radio" name="im" id="b1" onclick=alert("hello"); />
不正确:
<input type="radio" name="im" id="b1" onclick="alert("hello");" />