在javascript函数中返回值

时间:2014-03-14 09:42:36

标签: javascript asp.net

Screenshot showing alert even if i select 'female' 我有一个场景,其中有4个文本框和一个单选按钮列表。如果我通过离开所有字段单击“提交”按钮,它应该提醒我。我为文本框使用了4个Required Validator,为单选按钮列表使用了java脚本函数。

我的标记语言和功能是:

        function Validate() {

        var radio = document.getElementsByName("rdbGender");                    

        for (var i = 0; i < radio.length; i++) {

            if (radio[i].checked) {

                return true;

            }
            else
            {

                alert("Choose a Gender");
                return false;

            }
        }    
    }

Aspx页面是:

       <asp:Button ID="btnSave" Text="Save" runat="server" Width="50px" OnClientClick= "Validate()"
                OnClick="btnSave_Click" />

当我通过将fiealds留空来点击按钮,并且在没有选择项目的情况下离开单选按钮列表时,它正在发出警报但是如果我按下它则进一步执行。我在一个网站上读到,如果我们写#34;返回true&#34;在显示警报并单击确定后它将进一步执行,但我写了&#34;返回false&#34;警告之后意味着直到我检查一个它不应该执行的单选按钮...我错在哪里?

   Javascript:

    <script type="text/javascript">
      function Validate() {

        var checkedVal = false;

        var radio = document.getElementsByName("rdbGender");                    

        for (var i = 0; i < radio.length; i++) {

            if (radio[i].checked) {

                checkedVal = true;
                return checkedVal;
            }
            else {

                alert('Chhooose gender');
                return checkedVal;
            }


        }


    }

</script>

标记设计:

     <tr>
        <td>
            Gender
        </td>
        <td>
            <asp:RadioButtonList ID="rdbGender" RepeatDirection="Horizontal" runat="server">
                <asp:ListItem Value="MALE">

                </asp:ListItem>
                <asp:ListItem Value="FEMALE">
            Female
                </asp:ListItem>
            </asp:RadioButtonList>
        </td>
    </tr>
   .
   .
   .
   .![enter image description here][2] 
   <td>
            <asp:Button ID="btnSave" Text="Save" runat="server" Width="50px"  ValidationGroup="Star" OnClientClick="return Validate()"
                OnClick="btnSave_Click" />
        </td>

2 个答案:

答案 0 :(得分:2)

在调用客户端函数时尝试使用return

    <asp:Button ID="btnSave" Text="Save" runat="server" Width="50px"
 OnClientClick= "return Validate();"
                    OnClick="btnSave_Click" />

对于for的第一次迭代,如果没有选中第一个单选按钮,它将转到显示警告并返回false的else部分。请执行以下代码。

function Validate() {
        var checkedval=false;
        var radio = document.getElementsByName("rdbGender");                    

        for (var i = 0; i < radio.length; i++) {

            if (radio[i].checked) {
                    checkedval=true;
                   return checkedval;
            }

        }      
      return checkedval;

}

答案 1 :(得分:1)

一个函数只能有一个返回值。执行return true时,函数立即返回true并停止进一步。因此,请注释返回true并尝试。

function Validate() {

        var radio = document.getElementsByName("rdbGender");                    

        for (var i = 0; i < radio.length; i++) {

            if (radio[i].checked) {

                //return true;  
                //this return true causes the problem.

            }
            else
            {

                alert("Choose a Gender");
                return false;

            }
        }    
    }