根本没有调用Javascript函数

时间:2012-05-01 15:39:05

标签: javascript jquery html mobile

我制作了以下小Javascript脚本以在我的页面上启用一些表单元素:

function unHide()
{
    if($('#UserName').val() == "")
    {
        alert('Please Enter a User Name first');
    }
    else
    {
        $('#radio-choice-1').checkboxradio('enable');
        $('#radio-choice-2').checkboxradio('enable');
        $('#radio-choice-1-board').checkboxradio('enable');
        $('#radio-choice-2-board').checkboxradio('enable');
        $('#TransNum').textinput('enable'); 
        $('#UserContinue').remove();
        $('#nextButton').show();
    }
}

问题是,单击正确的按钮时不会调用此方法。即使警报也没有出现。这是HTML:

<label for="UserName" style="vertical-align: top;">User Name:</label>
<input type="text" name="UserName" id="UserName" placeholder="Ex: LesniakBjEVS101" />

...

<a data-role="button" data-icon="check" data-mini="true" id="UserContinue"
    style="float:right;" onclick="javascript:unHide(); return false;">Continue...</a>

...

<section id="nextButton" hidden>
    <a href="salamanderSelect.html" data-role="button" data-icon="forward" 
             data-mini="true" style="float:right;">Next</a>
</section>

我遇到的问题是当我点击提交按钮时,绝对没有任何反应。我没有从Javascript获得任何反馈,也没有任何反馈。

任何帮助将不胜感激! 谢谢!

编辑:

在尝试建议后,我仍然无法让javascript做任何事情。我尝试了多种浏览器,但仍然没有。

我昨天也开始工作......代码也没有任何变化

编辑2:

显然,如果我的脚本是HTML文件中的最后一个内容,即使在标记之外也是如此。

4 个答案:

答案 0 :(得分:4)

虽然onclick不需要javascript:,但它仍然适用于许多浏览器。以下是您的示例:http://jsfiddle.net/ukWcp/2/

仅在javascript:中使用href

虽然我建议使用firebug或chrome中的javascript控制台和调试器进行调试,但其他人提到使用全部javascript解决方案进行绑定。这是可取的。

答案 1 :(得分:4)

由于您已经在使用jQuery,为什么不使用它来附加您的活动,而不是使用笨重的onclick属性。

<a data-role="button" data-icon="check" data-mini="true" id="UserContinue"
style="float:right;">Continue...</a>
$("#UserContinue").click(function(e) {
    if($('#UserName').val() == "") {
        alert('Please Enter a User Name first');
    }
    else {
        $('#radio-choice-1').checkboxradio('enable');
        $('#radio-choice-2').checkboxradio('enable');
        $('#radio-choice-1-board').checkboxradio('enable');
        $('#radio-choice-2-board').checkboxradio('enable');
        $('#TransNum').textinput('enable'); 
        $('#UserContinue').remove();
        $('#nextButton').show();
    }
    e.preventDefault();
});

答案 2 :(得分:1)

$(document).ready(function() {
    $("#UserContinue").click(function() {
        if($('#UserName').val() == "")
        {
            alert('Please Enter a User Name first');
        }
        else
        {
            $('#radio-choice-1').checkboxradio('enable');
            $('#radio-choice-2').checkboxradio('enable');
            $('#radio-choice-1-board').checkboxradio('enable');
            $('#radio-choice-2-board').checkboxradio('enable');
            $('#TransNum').textinput('enable'); 
            $('#UserContinue').remove();
            $('#nextButton').show();
        }

        return false;
    ); 
});

如果您正在使用jQuery,为什么不完全使用它?如果这是您想要的,那么最后返回false会使click事件停止继续。

编辑:

你在原帖中说“我遇到的问题是当我点击提交按钮时,绝对没有任何反应。我没有从Javascript获得任何反馈,也没有任何反馈。”

然而,您已将点击事件附加到不完整的锚标记(它缺少href)。那么您是否希望在单击提交按钮或单击锚标记时触发该行为?如果您希望在单击提交按钮时触发触发器,则需要更改$(“#UserContinue”)以引用提交按钮而不是锚标记。或者使用.submit()事件处理程序而不是.click(),http://api.jquery.com/submit/

如果这不是问题,那么我建议您修改帖子以包含所有代码,并说明在点击哪些元素后您期望的行为。

编辑2:

我相信你没有围绕.ready()函数包装你的jQuery,请参阅现在包含.ready()的修订代码片段。 .ready()确保在使用jQuery之前完全加载DOM。

答案 3 :(得分:1)

保留你的功能并将事件处理程序添加到你的javascript而不是标记:

$(document).ready(function() { 
    $('#UserContinue').click(function() { 
       unHide();
    });
});

简短版本:

$(document).ready(function() { 
    $('#UserContinue').click(unHide);
});