【问题标题】:How to automatically submit form if input field value exists?如果输入字段值存在,如何自动提交表单?
【发布时间】:2017-07-26 02:07:45
【问题描述】:

我的网站上有以下表格。很简单,一个搜索输入框和一个提交按钮:

<form id="search-form" name="search-form" onsubmit="return search()">
  <input type="search" id="query" class="search-field" value="<?php echo $searchQuery;?>">
  <input type="submit" name="search-btn" id="search-btn" value="">
</form>           

如您所见,在搜索字段 (id=query) 我有一个 php,它有时会在他的字段中插入值。

我想做的是:

  • 如果$searchQuery 不存在(或者换句话说,如果搜索值 字段id=query 为空,允许用户点击搜索按钮 手动。
  • 如果$searchQuery存在,自动提交表单(模拟点击 搜索按钮。

任何解决方案都会有所帮助,JavaScript、jQuery 或 PHP。我只需要弄清楚当 PHP 变量 $searchQuery 存在时如何自动提交此表单。

【问题讨论】:

  • 这篇文章可能对你有帮助:stackoverflow.com/questions/12376173/…
  • 它处理不同的、延迟启动的问题。不完全适用。不过谢谢。
  • 如果查询值一开始就填写,那么表单会自动提交吗?由于未设置表单操作,它将重定向到同一页面,请注意无限重定向
  • 为什么不直接做一个重定向,或者更好的是,用这个页面上的值做任何你想做的事情?渲染表单并尝试立即提交是没有意义的。
  • @EdCottrell 有时让“常规”页面闪过是有价值的,即使它被快速替换。

标签: javascript php jquery


【解决方案1】:

我相信您是专门询问初始页面加载的。使用 jQuery:

$(document).ready(function() {
   if ($('#query').val() !== '') {
      $('#search-form').submit();
   }
});

【讨论】:

  • 是的,这就像一个魅力......非常感谢您,先生,您刚刚拯救了我的一天
【解决方案2】:

您只需要查看该值是否已填充,如果是则提交表单。

jQuery 版本

$( function() {
    if ( $( '#query' ).val() !== '' ) {
        $( '#search-form' ).submit();
    }
});

小提琴:https://jsfiddle.net/fe9m8pk3/

Javascript 版本

function ready( fn ) {
    if ( document.attachEvent ? document.readyState === 'complete' : document.readyState !== 'loading' ) {
      fn();
    } else {
      document.addEventListener( 'DOMContentLoaded', fn );
    }
}

ready( function() {
    if ( document.getElementById( 'query' ).value != '' ) {
        document.getElementById( 'search-form' ).submit();
    }
});

小提琴:https://jsfiddle.net/qeo25yu1/

【讨论】:

  • 太好了,这是最终的解决方案,我只接受了较短的版本
  • 是的,我没有在上面看到 ID - 我通常首先列出 ID,所以我的大脑只使用了更复杂的选择器:P
【解决方案3】:
<script type="javascript/text">
var query = document.getElementById('query');
if(query.value != ''){
    //do your submit
}
function yoursubmitfunctionname(){
    //do your submit
}
query.addEventListener('change',yoursubmitfunctionname);
</script>

【讨论】:

    【解决方案4】:

    如果使用 Jquery 填充最小字符长度,则此代码将提交表单:

    $(document).ready(function ()
    {
        var minimum_character = 7;
    
        $('#query').on('propertychange input', function (e)
        {
            var valueChanged = false;
    
            if(e.type=='propertychange')
            {
                valueChanged = e.originalEvent.propertyName=='value';
            }
            else
            {
                valueChanged = true;
            }
    
            if(valueChanged)
            {
                str_length = $('#query').val().length;
                if(str_length == minimum_character)
                {
                    $("#search-form").submit();
                }
            }
        });
    });
    

    【讨论】:

    • 这仅在我开始输入字段并达到 7 个字符或指定的任何长度时才有效。但是它 $searchQuery 是通过 PHP 自动预填充的,它什么也没做……看起来这与打字有关,而不是监视值。
    猜你喜欢
    • 2021-09-01
    • 2011-12-23
    • 1970-01-01
    • 2021-12-29
    • 2015-03-11
    • 2020-09-02
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    相关资源
    最近更新 更多