【问题标题】:JavaScript functions messing up my Radio Button displaysJavaScript 函数弄乱了我的单选按钮显示
【发布时间】:2015-05-01 01:49:06
【问题描述】:

我创建了一个包含两个单选按钮的表单。

每个单选按钮在单击时会显示一个单独的表单。

当一个按钮未被点击时,表单从视图中消失(它不显示)

我还添加了第二个 JavaScript 函数,如果没有单击任何单选按钮,它会禁用“SUBMIT”按钮。

程序运行良好............除了我有以下问题:

(a) 出于某种原因,我可以同时单击两个单选按钮!单选按钮不应允许多个选择。但是,在我的表单中,两个单选按钮都是可点击的

(b) 第二个JS函数不起作用;禁用提交按钮很容易。但是............当我单击任一单选按钮时,提交按钮无法启用。

这是第一个 JS 函数(用于“隐藏”每个单选按钮下的表单)

      <script        
     src='http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'>
     </script>

        <script type='text/javascript'>
        function displayForm(c) {
            if (c.value == "2") {    
                jQuery('#firstformContainer').toggle('show');
                jQuery('#secondformContainer').hide();
            }
                if (c.value == "1") {
                 jQuery('#secondformContainer').toggle('show');
                 jQuery('#firstformContainer').hide();
            }
        };
        </script> 

第二个功能,用于禁用提交按钮:

 <script type="text/javascript">
        function fCheck() { 
         document.my_form.submit.disabled 
         =!(document.my_form.formselector1.checked ||       
 document.my_form.formselector2.checked); 
         } 
 </script> 

这是表格:

    <form name="my_form" id="my_form">
            <input value="1" type="radio" name="formselector" 
    id="formselector1" onClick="displayForm(this); fCheck()"></input>Input 
     Firstname
            <div style="display:none" id="firstformContainer">
                <form id="firstform"> 
                            <input type="text" "16" id="firstname" 
      name="firstname" value="$firstname">
                        </form>
            </div>
            <br>
            <br>
            <input value="2" type="radio" name="formselector" 
       id="formselector2" onClick="displayForm(this); fCheck()">
       </input>Input Surname
            <div style="display:none" id="secondformContainer">
                <form id="secondform">
                    <input type="text" id="surname" name="surname" 
        value="$surname">
                </dd>
                </form>
            </div>
          <br>
          <input type="submit" name="submit" value="REGISTER" disabled>
       </form>

我错过了什么?

更新

我已经解决了RADIO BUTTON问题。

现在,我需要解决第二个问题,使用 JS 函数:fCheck ()

它不工作。

我感觉这是因为:我没有在 ONCLICK 中正确调用这两个函数。

   <input value="1" type="radio" name="formselector" id="radio1"   
   onClick="displayForm(this); javascript:fCheck()"></input>

   <input value="2" type="radio" name="formselector" id="radio2" 
   onClick="displayForm(this); javascript:fCheck()"></input>

【问题讨论】:

  • 您需要使两个无线电的name 属性相同。可以这么说,将它们联系在一起。
  • 它们都是一样的:“formselector”

标签: javascript php jquery html radio-button


【解决方案1】:

您不能嵌套表单。这使得第二个单选按钮不在表单内,因此它允许您同时选择两者。像这样重写你的html

<form name="my_form" id="my_form">
    <input value="1" type="radio" name="formselector" id="formselector1" onClick="displayForm(this); fCheck()"></input>
    <input value="2" type="radio" name="formselector" id="formselector2" onClick="displayForm(this); fCheck()"></input>
    <input type="submit" name="submit" value="REGISTER" disabled>
</form>
Input Firstname
<div style="display:none" id="firstformContainer">
    <form id="firstform"> 
        <input type="text" "16" id="firstname" name="firstname" value="$firstname">
    </form>
</div>
<br>
<br>
Input Surname            
<div style="display:none" id="secondformContainer">
    <form id="secondform">
        <input type="text" id="surname" name="surname" value="$surname">
    </form>
</div>
<br>

【讨论】:

  • 谢谢你,巴拉尼。您的代码并不完全准确;提交按钮仍应位于底部(正如我发布的那样)。否则,它会出现在表单的顶部。但是,您的回答仍然让我走上了正轨,所以谢谢:=))))
  • 但是,我的第二个 JS 函数不起作用。我觉得原因是:我没有在“ONCLICK”中正确调用这两个函数(我已经更新了我的问题以包含这个)
  • @phpnewbie2015 为什么要 3 个表格?我会将它们合并到一个表单中,并根据选择的单选按钮显示隐藏输入框。这也将解决您需要底部提交按钮的问题。如果您需要所有 3 个表单,那么您应该使用 css 来格式化提交按钮。 fCheck() 按照您的方式工作。在 Chrome/firebug 中调试,看看你得到了什么错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-08
  • 2014-08-05
  • 1970-01-01
  • 1970-01-01
  • 2022-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多