2012-04-23 12 views
0

テキストフィールドとチェックボックスをチェックするJavaScriptがありますが、ラジオボタンが表示されたときに、オプションの1つが選択されているかどうかを区別することができません。ラジオボタンが選択されているかどうかをチェックする方法は?

これを正しく行うにはどうすればよいですか?

これは私が持っているものである:私は私のフォームで

validateBugForm = function() 
{ 
    var name = document.forms["bug_form"]["Name"].value; 
    var email = document.forms["bug_form"]["Email"].value; 
    var tos = document.forms["bug_form"]["Accept"].checked; 
    var project = document.forms["bug_form"]["project"].value; 

    if (name == "") 
    { 
     alert("You must provide your name or nick name!"); 
     return false; 
    } 

    if (project == "") 
    { 
     alert("You must choose a project."); 
     return false; 
    } 

    if (email.indexOf ('@', 0) == -1 || email.indexOf ('.', 0) == -1) 
    { 
     alert("You must provide your email address!"); 
     return false; 
    } 

    if (!tos) 
    { 
     alert("You must agree to our Terms of Services."); 
     return false; 
    } 
} 

<tr> 
    <td width="30%">Choose a project in which you encountered a problem. 
    <big><font color="red">*</font></big></td></td> 
    <td width="10px" class="table_td_space"></td> 
    <td width="70%"> 
     <input type="radio" name="project" value="1" id="1">1<br> 
     <input type="radio" name="project" value="2" id="2">2<br> 
     <input type="radio" name="project" value="3" id="3">3<br> 
     <input type="radio" name="project" value="4" id="4">4<br> 
    </td> 
</tr> 

答えて

6

あなたは1を選択したかどうかを確認するためにラジオボタンのオプションのすべてをループする必要があります。

var projectObj = document.form1.project 
var len = projectObj.length 
var chosen = null; 

for (i = 0; i <len; i++) { 
    if (projectObj[i].checked) { 
     chosen = projectObj[i].value 
    } 
} 

if (chosen == null) { 
    alert("No Radio Button Chosen") 
} 

http://homepage.ntlworld.com/kayseycarvey/jss3p11.html

+2

+1しかし、[HTMLCollection](http://www.w3.org/TR/DOM-Level-2-HTML/html)のような変数とストアオブジェクトを宣言してください。 html#ID-75708506)を効率的に(そしてコードを少なく)するために 'document.form1.project'によって返されました。 – RobG

+0

ブリリアント。私はあなたの提案ごとに答えを更新しました。ありがとう! – msigman

+1

'selected'を' null'として初期化することで、最後に 'null'でもまだボタンがチェックされていないことを確認できます。ラジオボタンの値は ""(空文字列)です。 – RobG

1

この無線要素以上のフォームを検証しようとしない限り、これはうまく動作するので、私は1時間以上頭を傷つけました。各ラジオボタンは別々のフォーム要素であり、フォーム内のすべての要素(たとえば、名前に「required_」があるものすべて)をループしようとしているので、残りの検証が混乱するか、常にフォームをループするときに別々の要素として各ラジオボタンをチェックすることになるので、「false」になります。私が見つけたこの方法は、非表示のフォームフィールドを使用して、選択されたラジオボタンの値を保持することです。各ラジオボタンにonClickイベントを入れてクリックしたときにその値を非表示フィールドに転送します。その隠されたフィールドに。チェックする要素としてラジオボタンにフラグを立てないでください。

1

あなたは1を選択したかどうかを確認するためにラジオボタンのオプションのすべてをループする必要がありますが、あなたは「projectObj」を開催するときに、「値」メソッドを呼び出す必要があります...

var projectObj = document.form1.project.value; 
var len = projectObj.length; 
var chosen = null; 

for (i = 0; i <len; i++) { 
    if (projectObj[i].checked) { 
     chosen = projectObj[i].value; 
    } 
} 

if (chosen == null) {enter code here 
    alert("No Radio Button Chosen"); 
} 

それがされます値を取ることはそれだけで無線オブジェクトリストを返す

関連する問題