如果在浏览器中禁用 javascript,如何在表单提交时弹出 javascript 和操作? [复制]

Posted

技术标签:

【中文标题】如果在浏览器中禁用 javascript,如何在表单提交时弹出 javascript 和操作? [复制]【英文标题】:how to have a javascript popup on form submission and an action if javascript is disabled in the browser? [duplicate] 【发布时间】:2021-07-07 08:49:09 【问题描述】:

我有以下重定向到确认页面的表单,我想在浏览器中禁用 javascript 时保持这种行为,但是当启用 javascript 时,我想使用弹出窗口进行确认。 当启用 javascript 以仅显示确认弹出窗口时,如何禁用表单操作? ps:我必须使用jquery ui-lightness 插件,这就是我不使用引导模式的原因。

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link href="lib/jquery-ui-1.12.1.ui-lightness/jquery-ui.min.css" rel="stylesheet" type="text/css" />
    <link href="lib/jquery-ui-1.12.1.ui-lightness/jquery-ui.theme.min.css" rel="stylesheet" type="text/css" />
    <link href="lib/jquery-ui-1.12.1.ui-lightness/jquery-ui.structure.min.css" rel="stylesheet" type="text/css" />
    <script src="lib/jquery-3.6.0.min.js" type="text/javascript"></script>
    <script src="lib/jquery-ui-1.12.1.ui-lightness/jquery-ui.min.js" type="text/javascript"></script>
</head>
<body>
    <script>
        $("#btn_trash").click(function() 
            var ret = null;
            $('#confirmDialog').dialog(
                resizable: false,
                height: 300,
                width: 500,
                modal: true,
                autoOpen: true,
                buttons: 
                    Oui: function() 
                        ret = "yes";
                        $(this).dialog("close");
                    ,
                    Non: function() 
                        ret = "no";
                        $(this).dialog("close");
                    
                ,
                close: function() 
                    if (ret !== null)
                        $("#content").html("You answered <b>" + ret + "</b>.");
                    else
                        $("#content").html("You didn't answer.");
                
            );
        );
    </script>


    <form id="delete_board_form" action='board/submit_delete' method='post'>
        <input type='text' name='delete' value='<?= $board->id ?>' hidden>
        <button id="btn_trash" class="btn" type="Submit">
          <svg class="bi text-white"  >
            <use xlink:href="assets/ressources/bootstrap-icons/bootstrap-icons.svg#trash" />
          </svg>
        </button>
    </form>
    <div id="content"></div>
    <div id="confirmDialog" title="Attention" hidden>
        <p>Confirmez-vous le lancement de cette opération irréversible ?</p>
    </div>

</body>

【问题讨论】:

您的问题归结为“如何防止使用 JavaScript 提交表单”,这很容易研究。 @CBroe 谢谢你的帮助,我没有用这些术语搜索。在用您的术语进行研究之后,您很快就找到了答案! 【参考方案1】:

对我有用的是使用 event.preventDefault()

<form id="delete_board_form" action='board/submit_delete' method='post' onsubmit="event.preventDefault()">
        <input type='text' name='delete' value='<?= $board->id ?>' hidden>
        <button id="btn_trash" class="btn" type="Submit">
          <svg class="bi text-white"  >
            <use xlink:href="assets/ressources/bootstrap-icons/bootstrap-icons.svg#trash" />
          </svg>
        </button>
    </form>
    <div id="content"></div>
    <div id="confirmDialog" title="Attention" hidden>
        <p>Confirmez-vous le lancement de cette opération irréversible ?</p>
    </div>
    ````

【讨论】:

以上是关于如果在浏览器中禁用 javascript,如何在表单提交时弹出 javascript 和操作? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式检测是不是在 Windows 桌面应用程序中启用/禁用了 javascript? (网络浏览器控件)

如何防止用户使用浏览器选项禁用脚本

禁用javascript时条纹会发生啥[关闭]

你如何在python的机械化中禁用javascript?

如何使用 JavaScript 禁用浏览器中的后退按钮 [重复]

如何使用 JavaScript 禁用浏览器中的后退按钮 [重复]