2012-05-01 61 views
1

我做了以下小型的JavaScript脚本,使我的网页上某种形式的元素: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文件中的最后一件事,即使外的标签。

+0

是什么,显示在控制台中了? – Sampson

+0

只是建议将代码中的点击处理程序放在标记中。简单的用jQuery'$('#UserContinue')。click(function(){unHide();});' –

回答

4

虽然onclick并不需要javascript:,它应该仍然可以在许多浏览器中工作。这里是你的例子jsfiddle:http://jsfiddle.net/ukWcp/2/

只在href使用javascript:

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

+0

永远不会知道......只是试图学习JS,因为我去...谢谢! – Brendan

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(); 
}); 
+0

我从来不知道你可以这样做......这是做这件事的首选方式吗?谢谢! – Brendan

+0

这绝对是通过jQuery添加事件的最佳实践。 –

+1

@Brendan即使您不使用jQuery,也可以使用常规Javascript添加事件,因为它可以让您更好地分离Javascript和HTML。 –

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会阻止点击事件继续。

编辑:

你在你原来的文章说:“我遇到的问题是,当我点击提交按钮,绝对没有任何反应,我不从JavaScript,也没有任何东西得到任何留言反馈。”

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

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

编辑2:

我相信你是不是你的包裹的jQuery环绕。就绪()函数,请看到修改后的代码片段,现在包括。就绪()。 .ready()确保在使用jQuery之前完全加载DOM。

+0

我刚刚在Firefox和Chrome中尝试了这个解决方案,但它仍然无法正常工作。我没有得到任何东西,也没有任何反馈。 – Brendan

+0

Brendan,请参阅编辑。 – Anarchtica

+0

如果我的脚本是我文档中的最后一个东西,它就可以工作。 – Brendan

1

保持你的函数和事件处理程序添加到您的javacript而不是标记:

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

短版:

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