我有错误的提醒!怎么了?

时间:2012-01-06 23:24:23

标签: radio-button alert checked

我在揭示单选按钮的实际结果时遇到问题。我使用javascript从单选按钮获取值,无论如何都成功,但是当我创建一个if值的条件时! =“是”警报出现为什么仍然“OK”,我想选择是否“否”意味着应该出现的警告是“不好”。

这是表格:

<form id="form_test" name="form_test" method="POST">
<input type="hidden" id="menu_id" name="menu_id" value="<?=$menu_id?>"> 
<table align='center' width='auto' class='table1' cellpadding='5' cellspacing="0"> 
<tr> 
<td align='center' class='tabletitle'>No</td> 
<td align='center' class='tabletitle'>PC</td> 
<td align='center' class='tabletitle'>PN</td> 
<td align='center' class='tabletitle'>PCO</td> 
<td align='center' class='tabletitle'>GC</td> 
<td align='center' class='tabletitle'>CUR</td> 
<td align='center' class='tabletitle'>Codes</td>"; 
<td align='center' class='tabletitle'>Percent</td>"; 
<td align='center' width='5%' class='tabletitle'>Yes</td>"; 
<td align='center' width='5%' class='tabletitle'>No</td>"; 
</tr> 

[call to database] 

$num++; 

echo " <tr> 
<td class='tablecontent' align='center' valign='top'>$num</td> 
<td class='tablecontent' valign='top'>$pc</td> 
<td class='tablecontent' valign='top' nowrap>$pn</td> 
<td class='tablecontent' align='center' valign='top'>$pco</td> 
<td align='center' class='tablecontent' align='center' valign='top'>$gc</td> 
<td class='tablecontent' align='center' valign='top'>$cur</td> 
<td class='tablecontent2' valign='top'>$codes</td>"; 
<td align='center' class='tablecontent' valign='top'>$percent</td>"; 
<td align='center' class='tablecontent' valign='top'><input type='radio' id='yes' name='cek$num' value='yes' checked></td>"; 
<td align='center' class='tablecontent' valign='top'><input type='radio' id='no' name='cek$num' value='no' ></td>"; 
</tr>"; 

echo " 
<tr> 
<td><input type='button' name='accept' value='accept' onclick='getaccept()'></td>"; 
</tr>"; 
echo "</table>"; 
echo "<input type='hidden' id='jmlcek' name='jmlcek' value='$num'>"; 
echo "</form>"; 

然后这是获取价值的Javascript代码:

<script language="Javascript"> 
function getaccept(){ 
//var str = ''; 
var elem = document.getElementById('form_test').elements; 
var c = confirm("Yakin mau nerima?"); 
for (var i = 1; i <= elem.length; i++) 
{ 
var e = elem[i].value 
if (elem[i].type == "radio" && c) 
{ 
if (e != "yes" && elem[i].checked){ 
alert('NOT OKE'); 
return false; 
}else{ 
alert('OKE'); 
return true; 
} 
} 
} 
} 
</script> 

例如,实际上是三个并且全部被选为“是”的数据量,当我在其中一个现有数字上选择“否”时,它将显示警告“NOT OKE”,但实际上当我选择“否”时“我得到的价值是”是“并警告”OKE“。

我已多次尝试使它们正确,但结果仍然是错误的,所以有什么不对?

感谢。

2 个答案:

答案 0 :(得分:1)

这就是我得到的:

function getApprove(){
    //var elem = document.getElementById('form_test').elements;
    var RadioButton = document.getElementsByTagName('input'); 
    var Approve = confirm("Are you sure?");

for (var i = 0; i < RadioButton.length; i++) 
    { 
        if (RadioButton[i].type == "radio" && Approve) 
        { 
            if(RadioButton[i].checked && RadioButton[i].value != "yes"){
                alert("NOT OKE"); 
                return false;
            }
        }
    }

for (var i = 0; i < RadioButton.length; i++) 
{ 
    if (RadioButton[i].type == "radio" && Approve) 
    { 
        if(RadioButton[i].checked && RadioButton[i].value == "yes"){
            alert("OKE"); 
            return true;
        }
    }
}

=&GT;的解决&LT =

非常感谢 p.campbell ,因为你关心并帮助我(_ _)m:)

答案 1 :(得分:0)

这里发生的事情是您只评估FIRST单选按钮,因为您在return的这两个条件中都有(e != "yes" && elem[i].checked)声明。它正在退出该功能。

删除警报附近的return语句。他们退出函数,不允许循环迭代表单元素。

这是demo on JsBin