条件更改后仍会显示Javascript警报

时间:2016-09-24 16:02:30

标签: javascript jquery html

我正在构建一个网页,其中必须从列表中选择一个输入,然后点击一个按钮,根据该选择为您提供一个新页面。如果未选择列表中的任何内容并按下此按钮,我希望提醒用户他们必须在继续之前从列表中进行选择。

所以我的初始HTML有一个空白的href:<a id="Button" href="">Start</a>

然后我在列表选择后通过js添加这个href:

choice.mousedown(function(){
    if (this.data('fullname')=='X'){
           document.getElementById('Button').href = '/newpageX';}}

这一切都运行正常,并根据需要将href添加到按钮。当我下次尝试在href仍然是emtpy时添加警报时,问题就出现了。所以在上面的js代码之后,为了提醒用户这个href是否仍然是空白(即没有从列表中选择)并且他们点击了按钮,我添加了一个检查如下(使用jquery):

document.getElementById('Button').onclick = function () {
    if ($('Button').attr('href') === undefined) {
        alert('Please select an option from list above');}}

如果没有选择任何内容,这似乎工作正常,但如果用户确实从列表中选择了某些内容,则此警报仍会显示,然后才能根据列表选择正确进入新页面(newpageX)!这是我的主要问题。因此,好像通过列表选择定义href后,通过jquery if语句重新检查href(已定义/未定义)的条件 - 并且因此警报仍然显示。我究竟做错了什么?如果实际上现在根据列表选择定义了href,我该如何阻止警报显示?这里有更好的整体策略吗?

另外,单独 - 当href实际上是空的并且按下按钮时,在一次点击“确定”之后&#39;在警报上,页面被重新加载。我不相信这是必要的 - 我怎么才能有警报节目,但不能重新加载页面?我试图添加&#39; return false;&#39;在if语句之后,但是当选择列表时它不会进入新页面。

提前感谢任何协助人员......

1 个答案:

答案 0 :(得分:0)

好的,上面的评论给了我部分答案,但完整的解决方案是将jquery if语句的第一行更改为:

if ($('#Button').attr('href') == '') {

所以我需要在按钮之前添加#,但也需要从=== undefined更改为== ''

只需在按钮之前添加#而不更改第二部分就完全取消了警报。然后,我还可以在警报后添加return false;,以防止在空按钮点击时重新加载页面。