在此代码中,打开页面时,文本字段将被禁用。用户可以使用复选框启用或禁用文本字段。不幸的是,当结果超过一条时,禁用不起作用,但当只有一条记录时,禁用和启用起作用。问题出在哪里?
<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 "نام خدمت دهنده: "."   ".$amch["name"]." ".$amch["family"]."   "."شماره تماس: ".$amch["phone_number"]."   "."ایمیل: ".$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获取textarea。
也许这会解决您的问题:
更改:
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>
关于javascript - 当记录超过一个时,无法禁用文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33784145/