【问题标题】:Using preventDefault with prompt使用 preventDefault 和提示
【发布时间】:2016-05-31 22:38:11
【问题描述】:

我有一个多选列表,它调用一个函数来为列表中的每个选定项目打开一个提示。它工作正常,但提示中显示了防止重复消息。有没有办法防止这种情况?我发现这个jsfiddle 显示了问题。

加载我的函数的行是

<input type="submit" name="Edit Options" value="Edit Options" id="edit_options" onclick="javascript:return EditOptions();  return false;">

我的功能与 jsfiddle 中显示的相同,只是读入列表以提供提示参数。

【问题讨论】:

    标签: jquery prompt preventdefault


    【解决方案1】:
     onclick="javascript:return EditOptions();  return false;"
    

    你必须返回。第二个 return 永远不会执行。

     onclick="javascript:EditOptions();  return false;"
    

    假设 EditOptions() 不会出错,会起作用。

    【讨论】:

    • 感谢您指出双重退货错误。不幸的是,删除第一个并没有什么不同,并且防止重复消息仍然存在。
    【解决方案2】:

    您在第二个提示之后看到的复选框是 Chrome 浏览器中的一项功能。它可以让用户摆脱持续不断的、烦人的警报和提示流,因为提示会阻止用户在网页上执行任何操作,包括关闭它。

    要绕过它,您可以尝试在 提示,但这是一个丑陋的解决方法。

    编辑:这种变通方法似乎不再有效,从用户的角度来看这很好。您无法绕过浏览器功能。

    备用提示解决方案

    提示和警报是互联网早期的这些丑陋化石,通常应避免使用。更好的解决方案是使用模态框,它是非中断警报,仅在您的 HTML 内部而不是由用户的浏览器创建。

    有几个框架可以帮助您处理模式,例如 jQuery UI 和 Bootstrap。如果你愿意,你可以根据自己的喜好对这些家伙进行 CSS 处理 - 与浏览器的提示相反,浏览器的提示很枯燥,而且大小和行为也受到限制。

    【讨论】:

    • 我最初尝试使用对话框。问题是,我理解它的方式是,需要首先创建对话框的代码。我找不到根据列表中选定条目的数量来调整它的方法。因此,如果我创建表单并在其中包含 10 个输入字段并选择了 5 个列表项,则它可以正常工作。但是,如果选择了 11 项,则会丢失一项。可能有一种方法可以动态改变它,但我需要让它继续下去,并认为提示方法将是最快的方法。
    • 用JS动态添加输入字段应该没有问题,网上有很多教程。但是,由于您已决定使用提示,我的回答仍然有效:提示中复选框的问题是由浏览器功能引起的,可能的解决方法是在显示提示之间间隔 1 秒。
    • 感谢您的建议。
    • 我刚刚对此进行了测试,似乎 1 秒间隔不再有帮助。我认为任何间隔都没有帮助,因为除非我重新加载页面,否则即使在第一次之后几分钟过去,复选框也会显示。该功能可以帮助用户并防止他们卡住,因此我认为该复选框没有任何解决方法。
    猜你喜欢
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多