Php 仅处理Codeigniter表单中编辑的字段

Php 仅处理Codeigniter表单中编辑的字段,php,jquery,forms,codeigniter,Php,Jquery,Forms,Codeigniter,我正在创建一个多字段搜索表单。共有9个不同的搜索字段。不过,这些都不是强制性的。唯一的要求是您必须至少填写一个字段 它们都在加载时显示默认值(即“状态”),而不是使用标签来指示搜索字段的用途。因此,如果编辑一个字段,但不编辑其他八个字段,那么所有九个字段仍将有一个值 有什么好的、有效的方法来处理这个问题吗?我不希望在发布前手动执行jQuery中的逻辑(例如,if($(inputid).val()='Default Value'){…)或控制器(例如,if($this->input->post('

我正在创建一个多字段搜索表单。共有9个不同的搜索字段。不过,这些都不是强制性的。唯一的要求是您必须至少填写一个字段

它们都在加载时显示默认值(即“状态”),而不是使用标签来指示搜索字段的用途。因此,如果编辑一个字段,但不编辑其他八个字段,那么所有九个字段仍将有一个值

有什么好的、有效的方法来处理这个问题吗?我不希望在发布前手动执行jQuery中的逻辑(例如,
if($(inputid).val()='Default Value'){…
)或控制器(例如,
if($this->input->post('name')='Default Value'){$data['name']='
)因为整个站点都会有一些搜索的迭代,所以动态解决方案会非常有帮助并节省大量时间

谢谢


编辑 下面是@veddermatic的帖子之后我总结的要点:

呈现形式:

<form id="search-form" action="spend/search">
<input id='fname' value='First Name' data-original_value='First Name' name='fname'/>
<input id='lname' value='Last Name' data-original_value='Last Name' name='lname'/>
...
</form>

一个选项是有两个表单,一个是当前的“普通”表单,另一个是“重影”表单(它没有提交按钮或可见字段),目标和操作与呈现给用户的表单相同

向用户生成/呈现表单时,为每个输入提供一个类,您可以使用该类对其进行迭代,并将预填充的值放入数据属性中:

<input type="text" class="myFormInput" name="in1" data-original_value="blah" value="blah" />
<input type="text" class="myFormInput" name="in2" data-original_value="something" value="something" />
....

....
然后用javascript处理面向用户的表单submit,迭代
.myFormInput
元素,如果它们的值与原始值不同,则在“ghost”中创建一个同名的输入元素表单,然后提交该表单。这将只发送更改的元素,如果出于某种原因关闭/禁用了javascript,您的原始表单将正常降级,因为您的原始表单仍将提交


编辑:如果您有多个实例,您可以很容易地将其转换为插件,并在所有表单上使用它,因此您只需执行以下操作:
jQuery(“#userFacingForm”).ghostForm()

回答得很好。我已经在做一些类似的事情。我们正在为用户生成的查询的一侧提供一个可视化的表示,因此对输入进行
blur()
,我将其推到一个div中。我可以同时包含重影表单生成。谢谢!
$('.do-the-search').click(function(e) {
        e.preventDefault();

        $('#search-form input').each(function() {
            var $this = $(this);

            if($this.attr('data-original_value') != $this.val())
            {
                var clone = $this.clone();
                $("#ghost-form").append(clone);
            }
        });

        $("#ghost-form").submit();

    });
<input type="text" class="myFormInput" name="in1" data-original_value="blah" value="blah" />
<input type="text" class="myFormInput" name="in2" data-original_value="something" value="something" />
....