此功能启用它自动输入值,并在点击链接时跳转到输入框的位置 它运作良好。
<% if current_user %>
<% content_for(:head) do %>
<%= javascript_tag do %>
jQuery(document).ready(function () {
$(document).on('click', 'a#user', function() {
$(".box#input").val($(this).attr('value'));
var input = $(".box#input");
$(document).scrollTop(input .offset().top - 45);
input.focus();
});
<% end %>
<% end %>
<% end %>
而不是点击,我想要在加载页面时完全相同的操作,并且其网址包含此参数mode=1
,就像这样example.com/foo?mode=1
我该怎么做?
答案 0 :(得分:2)
首先:当您使用jQuery(document).ready()
时,您的页面已经加载,执行以下代码时。
第二:location.search
包含?
之后的所有网址
要解析它,请参阅Get escaped URL parameter。
总结一下:
<%= javascript_tag do %>
function getURLParameter(name) {
return decodeURI(
(RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
);
}
jQuery(document).ready(function () {
$(document).on('click', 'a#user', function() {
$(".box#input").val($(this).attr('value'));
var input = $(".box#input");
$(document).scrollTop(input .offset().top - 45);
input.focus();
});
if (getURLParameter('mode')==1) {
var input = $(".box#input");
$(document).scrollTop(input .offset().top - 45);
input.focus();
}
});
<% end %>
在您完成所有评论之后,我编写了一个示例页面,其中包含您的代码段并且可以正常运行:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="includes_js/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
function getURLParameter(name) {
return decodeURI(
(RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
);
};
jQuery(document).ready(function () {
// alert(location.search);
var mode=getURLParameter('mode');
// alert(mode);
if (mode==1) {
var input = $(".box#input");
$(document).scrollTop(input .offset().top - 45);
input.focus();
}
});
</script>
</head>
<body>
<form>
<input name="t1" /><br>
<input name="t2" class="box" id="input" />
</form>
</body>
</html>
对我来说,你的选择器很奇怪。你真的有class="box" id="input"
的标签吗?特别是我的身份似乎很奇怪。
答案 1 :(得分:1)
在body
标记中,您可以调用onload
属性的函数。这适用于任何网页,包括具有更多参数的网页,例如“http://xyz.com?mode=1&median=1¬hing=0”
例如
<script type="text/javascript">
//You can use the parameters like this
var parameters = window.location.search;
//Parameters will have the value parameters="?mode=1&median=1¬hing=0"
//Use this to extract "mode=1" (or split it even further) from the string using regex or string methods
//Lets call this - var extracted
if (extracted == "mode=1"){
//do whatever else you want with Javascript
}
</script>
<body onload="yourJsFunction">
<!--your html goes here-->
</body>