需要一些决议。在jquery中的click事件中没有调用Javascript函数

时间:2010-04-10 13:15:17

标签: php javascript jquery html jquery-validate

我正在尝试从我的javascript代码中调用名为isUrgencyTypeValid的函数,但它无效。请检查我的代码中的问题。 应显示未显示的警报

我的javascript函数没有被调用。

HTML代码

       <td colspan="2" align="center"><input id="btnSubmit" type="submit" value="submit" runat="server"/></td></tr>

jQuery调用函数

        $("#btnSubmit").bind("click",function(){
        alert(); // this is running
        isUrgencyTypeValid();

        });

javascript实现功能

function isUrgencyTypeValid()
    {
        alert("asd");
        var i=0;
        for(i=0;i<$("radio[name='urgencyType']").length;i++)
            {
            if($("radio[name='urgencyType']")[i].checked)
                {
                alert($("radio[name='urgencyType']")[i].value);                 
                return true;
            }           
        return false;
    }   

有关我的表单的更多说明在这里

<form runat="server" name="myPage">
    <table style="width: 100%;" cellpadding="5" cellspacing="5">
        <caption>
            Computer Support / Service Request
        </caption>
        <tr><td>First Name</td>
            <td><input id="txtFirstName" type="text" value="First Name" runat="server"/><span class="error"></span></td></tr>

        <tr>
            <td>Last Name</td>
            <td><input id="txtLastName" type="text" value="Last Name" runat="server"/><span class="error"></span></td></tr>

        <tr>
            <td>Email Address</td>
            <td><input id="txtEmailAddress" type="text" value="Email Address" runat="server"/><span class="error"></span></td></tr>    

        <tr>
            <td>Phone No</td>
            <td><input id="txtPhoneNo" type="text" value="Phone No" runat="server" /><span class="error"></span></td></tr>

        <tr>
            <td>Do you have text messaging</td>
            <td>
                <span>Yes</span><input id="rdoYes" value="Yes" type="radio" runat="server"/>
                <span>No</span><input id="rdoNo" value="No" type="radio" runat="server"/><span class="error"></span>
            </td></tr>

        <tr>
            <td>Description of request*: </td>
            <td><textarea id="txtDescription" cols="50" rows="10" runat="server"></textarea><span class="error"></span><span id="lengthCount"></span></td></tr>

        <tr>
            <td>Urgency of this support request:</td>
            <td>
                <input id="rdoAnyTime" name="urgencyType" value="Anytime" type="radio" runat="server"/><span>Anytime</span><br />
                <input id="rdoCplDays" name="urgencyType" value="In the next couple of days" type="radio" runat="server"/><span>In the next couple of days</span><br />
                <input id="rdoToday" name="urgencyType" value="Today" type="radio" runat="server"/><span>Today</span><br />
                <input id="rdoUrgent" name="urgencyType" value="This is extremely urgent...I cannot wait!" type="radio" runat="server"/><span>This is extremely urgent...I cannot wait!</span><br />
                <input id="rdoTalkSometime" name="urgencyType" value="Please contact me and we'll talk about it" type="radio" runat="server"/><span>Please contact me and we'll talk about it</span><br /><span class="error"></span>
            </td></tr>

        <tr>
            <td colspan="2" align="center">Captcha To Be implemented.</td></tr>

        <tr>
            <td></td>
            <td><input id="chkRequestCopy" type="checkbox" runat="server"/>Please send me a copy of this service request</td></tr>

        <tr>
            <td colspan="2" align="center"><input id="btnSubmit" type="submit" value="submit" runat="server"/></td></tr>

    </table>    
</form>   

2 个答案:

答案 0 :(得分:2)

我复制了你的代码并遇到了同样的问题。然后我仔细看了一下,注意到你在isUrgencyTypeValid()函数中缺少一个右括号。缺少for循环的结束括号。 Firefox错误控制台也会显示此信息。

添加支架后,警报工作正常。

function isUrgencyTypeValid()
{
    alert("asd");
    var i=0;
    for(i=0;i<$("radio[name='urgencyType']").length;i++)
        {
        if($("radio[name='urgencyType']")[i].checked)
        {
            alert($("radio[name='urgencyType']")[i].value);                 
            return true;
        }  
    } //this was missing
    return false;
}   

答案 1 :(得分:0)

您的radio选择器不正确。

不存在radio元素,但 :radio pseudo-class selector

您的代码应为:

function isUrgencyTypeValid()
{
    alert("asd");
    var i=0;
    for(i=0;i<$("input[name='urgencyType']:radio").length;i++)
        {
        if($("input[name='urgencyType']:radio")[i].checked)
            {
            alert($("input[name='urgencyType']:radio")[i].value);                 
            return true;
        }           
    return false;
}

**编辑**

除了上述更改之外,由于alert从未发生,因此表示未调用isUrgencyTypeValid

最可能的解释是,在将处理程序绑定到按钮的click事件之前,您不会等到加载DOM。你应该在某处看起来像这样的代码:

$(function()
{
    /*
     * ... other code ...
     */

    $("#btnSubmit").bind("click",function(){
        isUrgencyTypeValid();
    });

    /*
     * ... other code ...
     */
}