0

该功能可以实现自动输入值,并在点击链接时跳转到输入框的位置。
它运作良好。

<% 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 %>

我希望在加载页面时执行完全相同的操作,而不是单击,并且它的 URL 包含此参数mode=1,就像这样example.com/foo?mode=1

我怎样才能做到这一点?

4

2 回答 2

2

第一:当你使用jQuery(document).ready()你的页面已经加载完毕时,执行下面的代码。

第二:location.search包含 th 之后的所有 url ?
要解析它,请参阅获取转义的 URL 参数

总而言之:

    <%= 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"吗?特别是 id 对我来说似乎很奇怪。

于 2013-08-03T09:38:26.830 回答
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&nothing=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>
于 2013-08-03T09:31:59.940 回答