【问题标题】:Is there a way to automatically submit a form after text is populated via $_GET?有没有办法在通过 $_GET 填充文本后自动提交表单?
【发布时间】:2021-11-05 16:00:00
【问题描述】:

我通过 $_GET 为页面带来一个值并将其插入到我的搜索文本框中。该框是使用 ajax 自动完成的。问题是当它被放入搜索框中时,它不会自动搜索。它需要我按一个键才能启动。有没有一种简单的方法可以在插入值后提交它?或者也许是一种不同的方法来实现这一点?

<div class="form-group">
    <input type="text" name="search_box" id="search_box" class="form-control input-lg" placeholder="Type your search here" '.(isset($_GET['search']) ? 'value="'.$_GET['search'].'"' : "").' />
</div>
<script>
  $(document).ready(function(){

    load_data(1);

    function load_data(page, query = '')
    {
      $.ajax({
        url:"fetch.php",
        method:"POST",
        data:{page:page, query:query},
        success:function(data)
        {
          $('#dynamic_content').html(data);
        }
      });
    }

    $(document).on('click', '.page-link', function(){
      var page = $(this).data('page_number');
      var query = $('#search_box').val();
      load_data(page, query);
    });

    $('#search_box').keyup(function(){
      var query = $('#search_box').val();
      load_data(1, query);
    });

  });
</script>

【问题讨论】:

  • 那么搜索的目的是什么?什么事件触发它?它叫什么?我们需要一些细节,以便我们无需猜测即可回答。
  • 我刚刚发布了 javascript。
  • GET 在 if 语句内的文本框中。那将在代码中的哪里?我可以整天都在 PHP 中找到自己的方法,但我是 javascript 的一个极端新手。
  • 啊,我的错,我以为你的 $.get 有错字:)
  • 将您的第一行 load_data(1); 更改为 load_data(1, $('#search_box').val());

标签: javascript php jquery ajax


【解决方案1】:

既然您使用的是 jQuery,它就像触发事件一样简单

var search = $('#search_box');
search.keyup(function(){ .... });
if (search.val().trim()) search.trigger('keyup');

或者只是调用你的函数

var searchValue = $('#search_box').val().trim();
if (searchValue) load_data(1, searchValue);

【讨论】:

  • 代码中的哪个位置?我可以整天都在 PHP 中找到自己的方法,但我是 javascript 的一个极端新手。
  • UM.... 与您的其他代码......就像您已经调用它一样
【解决方案2】:

你可以尝试模仿“输入”

var e = jQuery.Event("keypress");
e.which = 13; //choose the one you want
e.keyCode = 13;
$("#theInputToTest").trigger(e);

Demo

【讨论】:

  • 谢谢。我只需要它在 url 中有值时提交。那会区分吗?
  • 那么先检查url中是否有值const queryString = window.location.search; const urlParams = new URLSearchParams(queryString); const search = urlParams.get('search')
猜你喜欢
  • 1970-01-01
  • 2020-10-28
  • 1970-01-01
  • 1970-01-01
  • 2015-12-01
  • 1970-01-01
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多