[英]Validating a single radio button is not working in available javascript validation script Part-2
[英]Validating a single radio button is not working in available javascript validation script
我有隨機生成的單選按鈕系列
<input type="radio" name="creatorusers" value="1">
<input type="radio" name="creatorusers" value="1">
<input type="radio" name="creatorusers" value="1">
<input type="radio" name="creatorusers" value="1">
.....so on
但我只得到一個單選按鈕並執行為它提供的javascript驗證chk是否選中單選按鈕,然后它不起作用Ples幫助我解決這個問題。
mycreator = -1;
for (i=frm.creatorusers.length-1; i > -1; i--) {
if (frm.creatorusers[i].checked) {
mycreator = i; i = -1;
}
}
if (mycreator == -1) {
alert("You must select a Creator User!");
return false;
}
始終(!)使用var關鍵字。 否則你的變量將在全局范圍內(是的,甚至是函數體中的變量),這可能會導致一些難以追蹤的錯誤。
正如@Felix指出的那樣 ,如果表單中有多個具有該名稱的元素,則creatorusers
將只是一個數組。 您可以在必要時創建單元素數組來解決此問題。
這是一個抽象函數,可以驗證任意復選框列表。
function ensureChecked(checkboxes, error) {
if (checkboxes) {
var cbx = (checkboxes.length > 0) ? checkboxes : [checkboxes];
for (var i=0; i<cbx.length; i++) {
if (cbx[i].checked) {
return true;
}
}
alert(error);
}
return false;
}
打電話給
ensureChecked(frm.creatorusers, "You must select a Creator User!");
我現在啊。 如果您只有一個單選按鈕,則frm.creatorusers
不是數組。 跳過它:
var mycreator = -1;
var checked = false;
if(typeof frm.creatorusers.length === 'number') {
for (var i=frm.creatorusers.length; i--; ) {
if (frm.creatorusers[i].checked) {
mycreator = i;
checked = true;
break;
}
}
}
else if(frm.creatorusers.checked){
mycreator = //? what here?
checked = true;
}
if(!checked) {
alert("You must select a Creator User!");
return false;
}
如果mycreator
僅用於檢查是否選擇了按鈕,則可以從上面的代碼中完全刪除它。
您的代碼的一些進一步說明:
var
聲明變量,否則它們將是全局變量。 break
來結束循環。 你可以這樣做:
function validate(frm){
var isChecked = false;
for (var i=0; i<frm.elements.length; i++)
{
if (frm.elements[i].type === 'radio'){
if (frm.elements[i].checked === true){
isChecked = true;
break;
}
}
}
if (isChecked === true){
return true;
}
else{
alert('You should select an option first !');
}
}
現在你應該在表單的onsubmit
事件上調用上面的函數:
<form onsubmit="return validate(this);">
現在validate
功能將確保至少檢查一個單選按鈕,否則它將不會提交。
這應該做到這一點
function isRadioSelected(btn) {
if(typeof btn.length === 'number') {
for(var i=0;i<btn.length;i++)
if(btn[i].checked) return true
}else{
if(btn.checked) return true
}
return false
}
您可以嘗試這樣的事情:
<html>
<head>
<script type="text/javascript">
function confirmsubmit() {
var btn = document.formname.buttonname
if (btn.checked == false)
{
window.alert("You did not click the button.");
btn.focus();
return false;
}
return true;
}
</script>
</head>
<body>
<form method="post" action="mailto:youremail@yourdomain.com"
name="formname" onsubmit="return confirmsubmit();">
click here: <input type="radio" name="buttonname"><br />
<p><input type="submit" value="Submit" name="submit"></p>
</form>
</body>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.