简化我的代码,我用从用户那里获得的一些数据重新加载页面(将其传递到url(,但一旦页面被重新加载,我就需要更改输入框的占位符。这是我的html:
<div id="someId">
<input type="text" name="date_chosen" id="date_chosen" placeholder="Select Date">
</div>
如果没有页面重新加载,这个jQuery代码就完成了这项工作(更改占位符(:
<script>
$(function() {
$("#date_chosen").on("click", function(e) {
location.href = "<same_url>" + "<user_input>"; //in the actual code I'm redirecting users to the same page after processing their input from the input box
$('#date_chosen').attr("placeholder", "parameter from user");
})
});
</script>
如果我在属性更改后立即执行console.log($('#date_chosen'(.attr("占位符"(,我会看到占位符在重新加载后发生了更改,但页面仍然显示旧的占位符,我认为这是因为另一个jquery初始化(无法解释(。解决方案是什么?
页面刷新后,旧脚本就不见了。您需要在重定向页面中处理您的逻辑。
编辑刚刚意识到您正在重定向到同一页面。然后,在页面加载时,我建议您调用服务器来检查用户是否成功提交了文件,如果成功了,则使用该响应进行逻辑处理。如果没有,则继续,就好像用户什么都没做一样。
另一种方法是不重定向用户。将表单设置为preventDefault操作。然后将提交按钮与处理程序函数绑定,使用ajax发送表单数据。一旦ajax返回成功的发送,那么就执行您的逻辑。
我找到的解决方案是读取url,并获取通过正则表达式传递给url的用户输入。
var url = window.location.href;
const regex = /?someparam=(.*)/gm;
var match = regex.exec(url)