我使用php撰寫表單
表單所填寫的資料會存到資料庫
希望在下次進入表單時
可呈現上次所填寫的結果
已抓到資料庫中上次所填寫的資料($thisStatus),如下
$sqlToStatus = "SELECT `status` FROM `result`";
$resultStatus = mysql_query($sqlToStatus);
$statusRowsNum = mysql_num_rows($resultStatus);
$statusfieldnum = mysql_num_fields($resultStatus);
while($statusdatas=mysql_fetch_array($resultStatus))
{
for($data=0;$data<$fieldnum;$data++)
{
$thisStatus = $statusdatas[$data];
<input type='' readonly='readonly' value='$thisStatus' name='this_status' id='this_status'>;
}
}
表單如下:
<input type='radio' class='default_status' id='status' name='status_$global_value' value='1'>
<input type='radio' class='default_status' id='status' name='status_$global_value' value='2'>
<input type='radio' class='default_status' id='status' name='status_$global_value' value='3'>
謝謝
把那三個選項都設不一樣的id
例如:
<input type='radio' class='default_status' id='status1' name='status_$global_value' value='1'>
<input type='radio' class='default_status' id='status2' name='status_$global_value' value='2'>
<input type='radio' class='default_status' id='status3' name='status_$global_value' value='3'>
先去判斷($thisStatus)的值後再對表單做處理
處理方面可以用JavaScript的setAttribute()
去改它的屬性,
假設資料庫儲存的value是1:
document.getElementById('status1').setAttribute('checked', 'checked');
也可以使用Jquery的attr()
更改屬性,
假設資料庫儲存的value是2:
$('#status2').attr('checked', 'checked');
就可以把它變成選中的狀態了!
如果要取消選取的話也可以用JavaScript的removeAttribute()
或Jquery的removeAttr()
,例如現在要取消status3的選取狀態:
//javascript版
document.getElementById('status3').removeAttribute('checked');
//Jquery版
$('#status3').removeAttr('checked');
謝謝,可以順利改變屬性
我目前是可以順利將每一題的status印出
但都是取最後一個status和改變第一題的屬性
我希望能夠第一個status改變第一題的屬性,第二個status改變第二題的屬性,第三個status改變第三題的屬性......依此類推
請問應該如何改呢
謝謝
目前javascript程式碼如下:
var Obj_Str = document.getElementsByName("buttonCheck");
var Count = Obj_Str.length;
for ($i = 1; $i < Count+1; $i++) {
var status = document.getElementById("this_status_"+$i).value;
alert("this_status_"+$i+" = "+status); //每一題的status印出
if("this_status_"+$i=="this_status_"+$i)
{
for($j=1;$j<=9;$j++){
if(status==$j){
document.getElementById('status'+$j).setAttribute('checked', 'checked');
}
}
}
}
有加
只是放在這裡討論時把它省略了
下次會寫清楚,感謝提醒~
有加
只是放在這裡討論時把它省略了
下次會寫清楚,感謝提醒~
有加
只是放在這裡討論時把它省略了
下次會寫清楚,感謝提醒~
抱歉~電腦怪怪的
我把問題再更新一次
謝謝,可以順利改變屬性
我目前是可以順利將每一題的status印出
但都是取最後一個status和改變第一題的屬性
我希望能夠第一個status改變第一題的屬性,第二個status改變第二題的屬性,第三個status改變第三題的屬性......依此類推
請問應該如何改呢
謝謝
目前javascript程式碼如下:
var Obj_Str = document.getElementsByName("buttonCheck");
var Count = Obj_Str.length;
for ($i = 1; $i < Count+1; $i++) {
var status = document.getElementById("this_status_"+$i).value;
alert("this_status_"+$i+" = "+status); //每一題的status印出
if("this_status_"+$i=="this_status_"+$i)
{
for($j=1;$j<=9;$j++){
if(status==$j){
document.getElementById('status'+$j).setAttribute('checked', 'checked');
}
}
}
}
this_status_"+$i=="this_status_"+$i
if裡面的這個條件是不是必成立啊@@
我也想看一下目前的HTML樣子
抓到資料庫中上次所填寫的資料($thisStatus)主要改了這裡,把每一題抓到的資料暫存到input標籤,如下:
echo "<input type='hidden' value='$thisStatus' name='this_status' id='this_status_$global_value'>";
然後再使用javascript取得每一題的值
var status = document.getElementById("this_status_"+$i).value;
html表單,把每個選項都設不一樣的id,如下:
<div class="status_div"> //第一題
<input type='radio' class='default_status' id='status1' name='status_$global_value' value='1'>
<input type='radio' class='default_status' id='status2' name='status_$global_value' value='2'>
<input type='radio' class='default_status' id='status3' name='status_$global_value' value='3'>
.
.
.
</div>
<div class="status_div"> //第二題
<input type='radio' class='default_status' id='status1' name='status_$global_value' value='1'>
<input type='radio' class='default_status' id='status2' name='status_$global_value' value='2'>
<input type='radio' class='default_status' id='status3' name='status_$global_value' value='3'>
.
.
.
</div>
...//第N題
我也覺得好像這行比較有點問題
this_status_"+$i=="this_status_"+$i
在這裡的原本想法是
如果現在為第一題、第二題、第三題......依此類推
就跑裡面的for迴圈,改變radio的選中狀態
但if判斷好像寫得不對
若資訊描述不足,請再告知我,謝謝
(若去掉那行if條件,只會取最後一個status並改變第一題的屬性)
<input type='hidden' value='$thisStatus' name='this_status' id='this_status_$global_value'>
這裡面的id,是this_status_1、this_status_2到第n題的this_status_n嗎?
是的,這裡是抓到資料庫中上次所填寫的資料($thisStatus)的值
哦哦 我知道了!!
你把if那行拿掉吧,之所以會只有最後一個被選中是因為你的id命名方式有問題,如下:
<div class="status_div"> //第一題
<input type='radio' class='default_status' id='status1' name='status_$global_value' value='1'>
<input type='radio' class='default_status' id='status2' name='status_$global_value' value='2'>
<input type='radio' class='default_status' id='status3' name='status_$global_value' value='3'>
//這行以上都還沒問題
.
.
.
</div>
<div class="status_div"> //第二題
<input type='radio' class='default_status' id='status1' name='status_$global_value' value='1'>
<input type='radio' class='default_status' id='status2' name='status_$global_value' value='2'>
<input type='radio' class='default_status' id='status3' name='status_$global_value' value='3'>
//但是從第二題開始到最後一題選項中的id就變的和第一題重複了!!!
.
.
.
</div>
...//第N題
在HTML中如果id重複就會以最後一次命名的該Element為主,所以才會只有最後一題有效,建議每一題都另外用一個規則來區分開個字的id,
如果是用迴圈做的話可以改成:
<div class="status_div"> //第一題
<input type='radio' class='default_status' id='1status1' name='status_$global_value' value='1'>
<input type='radio' class='default_status' id='1status2' name='status_$global_value' value='2'>
<input type='radio' class='default_status' id='1status3' name='status_$global_value' value='3'>
.
.
.
</div>
<div class="status_div"> //第二題
<input type='radio' class='default_status' id='2status1' name='status_$global_value' value='1'>
<input type='radio' class='default_status' id='2status2' name='status_$global_value' value='2'>
<input type='radio' class='default_status' id='2status3' name='status_$global_value' value='3'>
.
.
.
</div>
這樣JavaScript也可以使用迴圈去填值,以下我大概改一下,可能不會是正確的,可以再試看看。
var Obj_Str = document.getElementsByName("buttonCheck");
var Count = Obj_Str.length;
for ($i = 1; $i < Count+1; $i++) {
var status = document.getElementById("this_status_"+$i).value;
alert("this_status_"+$i+" = "+status); //每一題的status印出
for($j=1;$j<=9;$j++){
if(status==$j){
document.getElementById($i+'status'+$j).setAttribute('checked', 'checked');
else{
document.getElementById($i+'status'+$j).setAttribute('checked', '');
}
}
}
}
原來如此,太感謝了~~~順利解決問題了,也學到東西:D