2013-10-03 40 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

相關問題