Javascript 如何创建表单以更改按钮的a href url的一部分?
因此,我希望有一个表单(比如一个带有提交按钮的文本区域或一些简单的东西),可以更改另一个按钮的部分链接(如下所示) 此表单只会更改href链接的“receiveAddr”部分(将“1313mainstreetlosangeles”更改为用户提交的地址),但其他内容保持不变 因此,仅根据用户提交的文本更改按钮中href链接的一部分 有没有办法做到这一点Javascript 如何创建表单以更改按钮的a href url的一部分?,javascript,html,css,Javascript,Html,Css,因此,我希望有一个表单(比如一个带有提交按钮的文本区域或一些简单的东西),可以更改另一个按钮的部分链接(如下所示) 此表单只会更改href链接的“receiveAddr”部分(将“1313mainstreetlosangeles”更改为用户提交的地址),但其他内容保持不变 因此,仅根据用户提交的文本更改按钮中href链接的一部分 有没有办法做到这一点 <a class="button" id="btn" href="https://url.com/v1/?type=buy&
<a class="button" id="btn" href="https://url.com/v1/?type=buy&mode=popup&receiveAddr=1313mainstreetlosangelesca&receiveType=USD&callback=url.com" target="_blank">Buy now</a>
使用变量的字符串插值,该变量将在提交表单时用新地址设置 你需要一个
let url=新url(“https://url.com/v1/?type=buy&mode=popup&receiveAddr=1313mainstreetlosangelesca&receiveType=USD&callback=url.com");
设params=newurlsearchparams(url.search);
document.getElementById(“btn”).addEventListener(“单击”,函数(e){
var addr=document.getElementById(“addr”).value.trim();
如果(地址){
参数集('receiveAddr',addr);
url.search=params.toString();
this.href=url;
console.log(url);
}否则{
e、 预防默认值();
document.getElementById(“addr”).focus();
提醒(“请填写地址”);
}
});代码>
立即购买
明智的解决方案:
textarea=//your textarea
var value="";
if(textarea.value==null){
value="1313mainstreetlosangelesca";
}else{
value=textarea.value;
}
var changeForm=document.forms['changeBtn'],
regex=/receiveAddr=(.*)&/;
changeForm.addEventListener('submit',函数(e){
e、 preventDefault();//不提交函数
var form=e.target,
btn=document.getElementById('btn'),
href=btn.href,
textareaVal=encodeURIComponent(form.receiveAddr.value.trim());
btn.href=href.replace(regex,'receiveAddr='+textareaVal+'&');
});代码>
棘手的解决方案:
textarea=//your textarea
var value="";
if(textarea.value==null){
value="1313mainstreetlosangelesca";
}else{
value=textarea.value;
}
然后将链接添加到文档:
link='<a class="button" id="btn" href="https://url.com/v1/?type=buy&mode=popup&receiveAddr='+value+'&receiveType=USD&callback=url.com" target="_blank">Buy now</a>';
link='';
注意:URLSearchParams有,但这可以通过polyfill解决。无论如何,伟大的解决方案:)我觉得这是作弊…:( xD@mplungjanxD如果有轻微的创伤,我可以给你指一个治疗点。它叫代码高尔夫…:)对最近的答案有什么想法?更好:)好多了。如果地址中有特殊字符,那么就有点危险了,你真的应该修剪和编码组件。请看我的第二个解决方案,它不关心特殊字符,也不需要正则表达式。有了JS和JQuery,可以使用替换()
或类似的东西,但是请展示一个更完整的代码来理解表单的用途以及哪些表单需要更改。OP可能不知道字符串插值的含义。当你回答这样的问题时,请举个例子。因为其他答案都有很多例子,所以不再需要了