2013-10-03 67 views
5

这是一个函数,它只是检查单选按钮是否已在表单元素上被选中。如果onclick函数返回false,则停止链接操作

function validate_selected(element) { 
    var radios = document.getElementsByName(element); 
    var formValid = false; 

    var i = 0; 
    while (!formValid && i < radios.length) { 
     if (radios[i].checked) formValid = true; 
     i++;   
    } 

    if (!formValid) alert("Must select one before moving on!"); 
    return formValid; 
} 

这是我的链接,如果函数返回false,我想禁用它。现在链接显示警报,但警报之后链接将用户转发。

<a href="#m2" data-role="button" onclick="validate_selected('owner');"><p style="font-size:<?php echo $size1.'px'; ?>;">Next</p></a> 

我想链接被禁用,如果函数返回false。

回答

7

你几乎得到了它,你需要添加的功能藏汉的“回归”:

onclick="return validate_selected('owner');" 

另外一个小的尖端,添加break:

while (!formValid && i < radios.length) { 
    if (radios[i].checked){ 
     formValid = true; 
     break; // No need to continue any more, we've found a selected option 
    } 
    i++;   
} 

我已将onclick从内联更改为正确处理事件的方式,并进行了演示。刚刚从按键上移开的onclick和补充一点:

document.getElementById('button').onclick =function(){ validate_selected('owner'); }; 

http://jsfiddle.net/WX6v7/1/(添加在例如一些单选按钮)

+0

第二部分稍微不正确,他的while循环陈述'while!'!formValid'。所以只要这个设置为true,'while'就会退出。尽管如此,你的方法更好。 – mattytommo

+0

仍然无法使用返回添加!改变了while:while(我 user2843198

+0

@matty,你说得对,我错过了那部分。休息不是,虽然 – Martijn

3

您需要实际returnonclick的价值,你的函数返回:

onclick="return validate_selected('owner');"> 
+1

还没添加有回报的工作! – user2843198