启用/禁用特定的动态添加表单输入

时间:2011-09-22 16:03:26

标签: php javascript html forms onchange

我正在创建一个HTML表单,它从数据库中获取一些选项(php + mysql)

在php中,我正在创建一个checkbox输入,旁边有一个选择框。

我将复选框houseAppsSelected[]命名为select customCategories[],因此我将值作为数组。

我将所有HTML附加到名为$options的var中,稍后我会回复它。

while ($row=mysql_fetch_array($result)) { 
    $cat_id=$row["category_id"]; 
    $cat_name=$row["category_name"]; 
    $options.="<INPUT type=\"checkbox\" name=\"houseAppsSelected[]\" VALUE=\"$cat_id\">".$cat_name." ---> ";


    $custom_sql="SELECT custom_cat_id, cat_name FROM custom_categories WHERE house_app='$cat_id'"; 
    $custom_result=mysql_query($custom_sql);

    $options.="<SELECT name=\"customCategories[]\">";
    $options.="<OPTION value=\"0\"> Choose Category </option>";

    while ($custom_row=mysql_fetch_array($custom_result)) {
        $custom_id = $custom_row['custom_cat_id'];
        $custom_name = $custom_row['cat_name'];
        $options.="<OPTION value=\"$custom_id\">".$custom_name."</option>";
    }

    $options.="</SELECT> <br /> <br />";
}

我希望使用复选框控制是启用还是禁用选择框。

我找到了this article,这让它看起来很简单,但如果所有选择框都有相同的名称,它会禁用所有这些。

如果我使用php动态构建它们,是否有办法让特定的复选框禁用/启用特定的选择框? (它们都有相同的名称)。

2 个答案:

答案 0 :(得分:1)

您可以为每个标记指定唯一的“id”值,该值与“name”无关。然后你可以使用

var elem = document.getElementById(something);

通过该唯一值访问它们。

究竟你的php代码如何组成独特的值排序取决于你需要什么。它确实可以是任何东西。

答案 1 :(得分:1)

您可以使用nextSibling属性查找选择。

function chkboxClick(chkbox) {
    chkbox.nextSibling.nextSibling.disabled = !chkbox.checked;
}

像这样添加点击处理程序:

<INPUT type="checkbox" onclick="chkboxClick(this)" ... /> 

在这里演示:http://jsfiddle.net/gilly3/vAK7N/