当记录不止一条时,禁止使用禁用文本字段


no working disabling textfield when records are more than one

在这段代码中,当打开页面时,文本字段将被禁用。用户可以使用复选框启用或禁用文本字段。不幸的是,当结果不止一个时,禁用不起作用,但当只有一个记录时,禁用和启用会起作用。问题出在哪里?

<script language="JavaScript">
<!--
function enable_text(status)
{
status=!status; 
    document.f1.explain.disabled = status;
}
//-->
</script>

  <?php
$id=$fgmembersite->UserID(); 
$db_host = 'localhost';
$db_name= 'site';
$db_table= 'action';
$db_user = 'root';
$db_pass = '';

$con = mysql_connect($db_host,$db_user,$db_pass) or die("خطا در اتصال به پايگاه داده");
$selected=mysql_select_db($db_name, $con) or die("خطا در انتخاب پايگاه داده");
mysql_query("SET CHARACTER SET  utf8");
$dbresult=mysql_query("SELECT tablesite.name,
                              tablesite.family,
                              tablesite.username,
                              tablesite.phone_number,
                              tablesite.email,
                              action.service_provider_comment,
                              action.price,
                              action.date,
                              job_list.job_name,
                              action.ind
                       FROM  $db_table
                       INNER JOIN job_list
                       on job_list.job_id=action.job_id 
                       INNER JOIN tablesite
                       on tablesite.id_user=action.service_provider_id AND action.customer_id='$id'
                       WHERE vote=''",$con);
   $i = 1;
                       while($amch=mysql_fetch_assoc($dbresult))
{

echo "<form name=f1 id='form_$i' method='post' action='{$_SERVER['PHP_SELF']}' accept-charset='UTF-8'>'r'n";
echo'<div dir="rtl">';
echo "نام خدمت دهنده: "."&nbsp&nbsp&nbsp".$amch["name"]." ".$amch["family"]."&nbsp&nbsp&nbsp"."شماره تماس: ".$amch["phone_number"]."&nbsp&nbsp&nbsp"."ایمیل: ".$amch["email"].'<br>'.
"شغل انجام شده: ".$amch["job_name"].'<br>'
."تاریخ انجام عملیات: ".$amch["date"].'<br>'
."هزینه ی کار: ".$amch["price"]." تومان".'<br>'
.$amch["service_provider_comment"].'<hr/>';
/*echo'<label for=''body''>توضیحات: </label> <br />';*/
    echo'<label for="explain" style="color:#CC0000">این فیلد را فقط در صورتی پر کنید که شکایت دارید</label> <br />';
    echo'<input type="checkbox" name=others onclick="enable_text(this.checked)" >شکایت دارم <br>';
    echo'<textarea name="explain" id="explain" cols="" rows="" style="width:300 ;height:300">
    </textarea>'.'<br/>'; 
echo'<label for="vote">امتیاز این عملیات را ثبت نمایید: </label> <br />';
echo '<select name="vote">';
echo '<option value="عالی">عالی</option>';
echo '<option value="خوب">خوب</option>';
echo '<option value="متوسط">متوسط</option>';
echo '<option value="بد">بد</option>';
echo '</select>';
echo '<input type="hidden" name="ind" value="' . $amch["ind"] . '">'; //new line
echo '<br/>';
echo '<input type="submit" name="submit" value="ارسال نظر شما"/>';echo'<hr/>';
echo'<hr/>';
echo'</div>';
echo "</form>'r'n";
    $i++;
}
?>

当您有多个复选框时,您想知道要启用或禁用哪个复选框。一个可能的解决方案是在while循环中向文本区域添加一个id,并使用变量$i使其唯一,例如"explain_1"。然后,您还可以将$i传递给javascript函数,例如"enable_text(1)",这样该函数就可以通过id获取文本区域。

也许这会解决你的问题:

更改:

echo'<input type="checkbox" name=others onclick="enable_text(this.checked)" >شکایت دارم <br>';
echo'<textarea name="explain" id="explain" cols="" rows="" style="width:300 ;height:300">
</textarea>'.'<br/>'; 

至:

echo'<input type="checkbox" name=others onclick="enable_text(' . $i . ')" >شکایت دارم <br>';
echo'<textarea name="explain" id="explain_' . $i . '" cols="" rows="" style="width:300 ;height:300" disabled>
</textarea>'.'<br/>';

然后更改

<script language="JavaScript">
<!--
function enable_text(status)
{
status=!status; 
    document.f1.explain.disabled = status;
}
//-->
</script>

至:

<script language="JavaScript">
    <!--
    function enable_text(number) {
        var elm = document.getElementById('explain_' + number);
        elm.disabled = !elm.disabled;
    }
    //-->
</script>

它放置了多个具有相同id属性的元素,这就是失败的原因。

id中包含迭代器$i和函数:

echo '<input type="checkbox" name=others onclick="enable_text(this, $i)" >شکایت دارم <br/>';
echo '<textarea name="explain" id="explain$i" cols="" rows="" style="width:300 ;height:300"></textarea><br/>'; 

将功能更改为:

function enable_text(element, i) {
    document.getElementById('explain' + i).disabled = !element.checked;
}