Javascript 当url有一些参数时显示引导模式
我是开发网络应用程序的新手,我正在创建一个小型项目,它有一个简单的注册、签名系统,我不想让用户转到另一个页面登录,相反,我使用了一个有一个登录表单的,我有一个按钮,单击该按钮也会更改url并触发模式。现在我只想显示模式,如果url有参数=Javascript 当url有一些参数时显示引导模式,javascript,jquery,twitter-bootstrap,bootstrap-modal,Javascript,Jquery,Twitter Bootstrap,Bootstrap Modal,我是开发网络应用程序的新手,我正在创建一个小型项目,它有一个简单的注册、签名系统,我不想让用户转到另一个页面登录,相反,我使用了一个有一个登录表单的,我有一个按钮,单击该按钮也会更改url并触发模式。现在我只想显示模式,如果url有参数=?action=login 首先,我尝试了document.getElementById('#myBtn')。将EventListener('click',setQry)添加到我的按钮,该按钮调用函数,该函数在单击时更改url参数。url参数在单击时会发生更改,
?action=login
首先,我尝试了document.getElementById('#myBtn')。将EventListener('click',setQry)
添加到我的按钮,该按钮调用函数,该函数在单击时更改url参数。url参数在单击时会发生更改,但模式不会显示,请注意,我的按钮上有数据目标
和数据切换
属性,用于显示模式。我也试过了。但它不起作用
我只是想实现模式应该显示,如果url有参数
登录成功后,我想隐藏模式并删除url参数
这是我的HTML:
<button type='button' id='toggle-modal' data-toggle='modal' data-target='#login-modal'></button>
这段代码应该可以工作,您的处理程序只在单击时启动,它对页面加载没有影响,因此,应该调用它来处理页面加载上的参数,很抱歉我的英语不好
setQry();
函数setQry(){
const url=新url('http://localhost/learning%20php/practice%20programs/login%20system/');
var qry_params=新的URLSearchParams(url.search);
如果(!qry_参数有('action','login')){
qry_参数集('action','login');
window.location.search=qry_参数;
}
if(window.location.search==qry_参数){
$(“#登录模式”).model('show');
}
};代码>考虑使用PHP实现这一点。您可以在PHP中获取get参数,然后根据get参数更改内容
<?php
if ($_GET['action'] == "login")
{
?>
<!-- Add content in html if action code is set to "login" -->
<?php
}
else
{
....
}
?>
单击按钮时会调用两次事件。所以我已经从按钮中删除了其他属性。
document.getElementById(“#切换模式”).addEventListener('click',setQry)中使用的
代码>也造成了问题
在javascriptqry_params.set('action','login')中设置参数代码>正在刷新页面。所以弹出窗口很近
下面给出了更新代码,希望它能解决这个问题
``"`
document.getElementById('toggle-modal')。addEventListener('click',setQry);
函数setQry(){
const url=新url('http://localhost/learning%20php/practice%20programs/login%20system/?action=login');
var qry_params=新的URLSearchParams(url.search);
if(window.location.search.replace(“?”,“)==qry\u参数){
$(“#登录模式”).model('show');
}
};
对不起,我在url参数?action=login上有输入错误。感谢您的编辑手册。您是否在浏览器url中添加了?action=login
?最后它开始工作了,但奇怪的是,第二次单击后,模态就被激活了。如果您能够解决第二次单击的问题,那将非常棒,下面是我的代码函数setQry(){var url=window.location.href.toString();var qry_str='?action=login';if(url.endsWith(qry_str)==false){window.location.search=qry_str;}if(window.location.search==qry_str){$('#login modal').modal('show');}}我检查了您的代码,首先单击浏览器url中的设置查询字符串,然后再单击弹出窗口。因此,如果您删除if(url.endsWith(qry_str)==false){window location.search=qry_str
并在浏览器url中使用?action=login
它将按照您的预期工作。尝试此代码它将解决您的问题函数setQry(){var url=window.location.href.toString();var qry_str='?action=login';if(url.endsWith(qry_str)==false){if(window url=window.history.pushState){const newURL=newURL=newURL(window.location.href);newURL.search='?action=login';window.history.pushState({path:newURL.href}',newURL.href);}}}如果(window.location.search==qry_str){$('.#登录模式')。模式('show');}
<?php
if ($_GET['action'] == "login")
{
?>
<!-- Add content in html if action code is set to "login" -->
<?php
}
else
{
....
}
?>
<button type='button' id='toggle-modal' ></button>
<script>
document.getElementById('toggle-modal').addEventListener('click', setQry);
function setQry() {
const url = new URL('http://localhost/learning%20php/practice%20programs/login%20system/?action=login');
var qry_params = new URLSearchParams(url.search);
if (window.location.search.replace("?", "") == qry_params) {
$('#login-modal').modal('show');
}
}; </script>