[英]Why isn't this simple javascript working?
这个javascript几乎可以正常工作,单选按钮列表除外。
<script language="javascript" type="text/javascript">
function validate() {
if (document.getElementById("<%=txtballotName.ClientID%>").value == "") {
alert("Ballot Name can not be blank");
document.getElementById("<%=txtballotName.ClientID%>").focus();
return false;
}
if (document.getElementById("<%=txtballotCity.ClientID %>").value == "") {
alert("Ballot City can not be blank");
document.getElementById("<%=txtballotCity.ClientID %>").focus();
return false;
}
if (document.getElementById("<%=txtballotState.ClientID%>").value == "") {
alert("Ballot State cannot be blank");
document.getElementById("<%=txtballotState.ClientID%>").focus();
return false;
}
if (document.getElementById("<%=txtballotZip.ClientID%>").value == "") {
alert("Zip Code cannot be blank");
document.getElementById("<%=txtballotZip.ClientID%>").focus();
return false;
}
if (document.getElementById("<%= txtreceivedby.ClientID %>").checked == false) {
alert("Request Received By can not be blank");
document.getElementById("<%=txtreceivedby.ClientID%>").focus();
return false;
}
return true;
}
单选按钮列表如下所示:
<tr>
<td>
<label for="txtreceivedby_0">FAX</label>
<input id="txtreceivedby_0" type="radio" name="txtreceivedby" value="Fax" />
</td>
<td>
<label for="txtreceivedby_1">EMAIL</label>
<input id="txtreceivedby_1" type="radio" name="txtreceivedby" value="Mail" />
</td>
<td>
<label for="txtreceivedby_2">PHONE</label>
<input id="txtreceivedby_2" type="radio" name="txtreceivedby" value="Phone" />
</td>
</tr>
到目前为止,除单选按钮接收的txt之外,其他表单字段都正在验证。 我没有收到任何错误,但也没有验证。 提前致谢
您可以创建一个简短的实用工具函数,该函数将为您提供任何广播组的价值:
function getRadioValue(name) {
var items = document.getElementsByName(name);
for (var i = 0; i < items.length; i++) {
if (items[i].checked) {
return(items[i].value);
}
}
}
然后,您可以像这样在您的广播组中获取选中的项目:
var val = getRadioValue("txtreceivedby");
工作演示: http : //jsfiddle.net/jfriend00/PHXaC/
简而言之,头疼得厉害; 如果您要寻呼我,我会选择一个很好的<select>
框。
但是,要有用,您需要查看视图源,以确切了解ASP代码在浏览器中的构成。 我不知道ASP,但我敢打赌它要么在每个收音机上输出3个不同的ID,要么在所有三个收音机上输出相同的ID(#txtreceivedby)。
无论它给了,验证码if(bla_bla_blah.checked===false)
是错误的,因为它只目标只有一个在无线电集合,甚至与固定的,即无线电可能无法返回.checked===false
交叉浏览器。
ASP的radiobuttonlist呈现为包含单选按钮项的表。 因此,获取单选按钮的已检查状态有点复杂。
如果您通过Google搜索“ ASP radiobuttonlist和javascript”,则可能会找到各种来源。 如果您是从母版页创建的,则我已经测试了其中的一些,但并不是每个都工作得特别好。
但是,我已经按照自己的方式尝试过了,这里是:
<asp:RadioButtonList ID="txtReceivedBy" runat="server">
<asp:ListItem Text="Fax" Value="0"></asp:ListItem>
<asp:ListItem Text="Email" Value="1"></asp:ListItem>
<asp:ListItem Text="Phon" Value="2"></asp:ListItem>
</asp:RadioButtonList>
<input type="button" onclick="alert(checkedRadio());" value="Test RadioButtonChecked Status" />
和我用来获取ceccked状态的javascript在这里
function checkedRadio() {
var rtn = false;
var i = 0;
var radioBoxesContainer = document.getElementById("<%=txtReceivedBy.ClientID%>");
if (radioBoxesContainer) {
var radioBoxes = radioBoxesContainer.getElementsByTagName("input");
if (radioBoxes && radioBoxes.length > 0) {
for (i - 0; i < radioBoxes.length; i++) {
if (radioBoxes[i].checked) {
rtn = true;
break;
}
}
}
}
return rtn;
}
如果您有兴趣获得现场演示,可以在这里找到它http://plugins.amiwithyou.com/sof/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.