这是HTML页面,我正在研究:
<div class="container">
<form id="script-approval-form" action="" method="post">
<h3 class="title-submitted">Script Approval</h3>
<h5> Below you will find the script that needs to be approved before being used: </h5>
<fieldset>
<textarea id = "textarea-script-approval" class="textarea-approval"
type="textarea" tabindex="1" required autofocus></textarea>
</fieldset>
<fieldset>
<input class="email-box" placeholder="Your Email Address (if clarification is needed)"
type="email" pattern=".+@COMPANY.com"
oninvalid="this.setCustomValidity('E-mail MUST end with @COMPANY.com')"
value="{{ user_info.email }}" tabindex="2" required>
<button id = "what" class="submit-btn" type="submit"><a id = "submit-lnk" class="submit-link"
href = "#"
>
Submit for Approval</a>
</button>
</fieldset>
</form>
</div>
这是一个带有预填充文本区域和提交按钮的表单。文本区域将使用以下JS脚本自动填充:
const url = window.location;
const urlObject = new URL(url);
const script = urlObject.searchParams.get('authorize')
var decodedScript = window.atob(script);
document.getElementById("textarea-script-approval").value = decodedScript;
它获取已编码的base64 URL参数(例如:url.com/script_approval?authorize=DScdsaCs),并将其作为普通文本放在页面textarea中。但是,如果用户单击“提交”按钮/链接,他将被发送到另一个页面。我还需要将文本形式的脚本传递到下一页,因此,出于这个原因,我必须:
/script-sent?script=${encoded_string}
我尝试过的事情:
<script>
document.getElementById("submit-lnk").onclick = function() {
var script=document.getElementById("textarea-script-approval").value;
var encodedScript = window.btoa(script);
document.getElementById("submit-lnk").href = `/script-sent?authorize=${encodedScript}`;
return false;
};
</script>
我肯定知道encodedScript
包含正确的值。问题出在那之后,当我更改href时。即使其语法在语法上正确,该页面也只是重新加载或什么也没有发生。我测试了模板化的字符串,它也显示良好。有人可以给我任何指导吗?谢谢!
答案 0 :(得分:0)
您可以从按钮内删除锚标记。
<button id = "what" class="submit-btn" type="submit">
<!-- remove this -->
<a id = "submit-lnk" class="submit-link" href = "#">Submit for Approval</a>
</button>
除了替换href之外,您还可以直接直接重定向到页面
<script>
document.getElementById("submit-lnk").onclick = function () {
var script = document.getElementById("textarea-script-approval").value;
var encodedScript = window.btoa(script);
// instead of replacing the href you can simply redirect to the page directly
window.location.href = `/script-sent?authorize=${encodedScript}`;
return false;
};
</script>
答案 1 :(得分:0)
看起来表单上的操作为空白。尝试输入到下一页的路径。
或使用本地存储在浏览器缓存中传递数据。
答案 2 :(得分:0)
您应该能够使用jQuery做您需要做的事情
jQuery('#what').click(function(){
jQuery('#script-approval-form').attr('action','insert link here');
jQuery(this).click();
};