2013-03-20 2 views
0

У меня есть многопользовательская форма поиска, которую я создаю. Существует 9 различных полей поиска. Однако ни одно из них не является обязательным. Единственное требование - заполнить хотя бы одно поле.Обработать только отредактированные поля в форме Codeigniter

Все они отображают значение по умолчанию (т. Е. «Состояние») при загрузке вместо использования меток, чтобы указать, какова цель поля поиска. Итак, если вы отредактируете одно поле, но оставите остальные восемь в покое, то все девять будут по-прежнему иметь значение.

Есть ли хороший, эффективный способ справиться с этим? Я бы предпочел не выполнять вручную логику в jQuery перед отправкой (например, if($(inputid).val() == 'Default Value') { ...) или контроллером (например, if($this->input->post('name') == 'default value') { $data['name'] = ''), потому что будет несколько итераций этого поиска по всему сайту, поэтому динамическое решение будет невероятно полезным и сохранить кучу времени.

Спасибо!


EDIT вот суть того, что я закончил с после @ 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> 

призрак формы:

<form id="ghost-form" action="spend/search"> 
<!--nothing here yet--> 
</form> 

jQuery для обработки всего:

$('.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(); 

    }); 

ответ

1

Один из вариантов будет иметь две формы, «нормальный» вид у вас есть в данный момент, и «призрак» форму (это не кнопки или видимых полей представить) с одной и той же цели и действия, как один представлены для пользователя.

При создании/визуализации формы для пользователя, дать каждому вход класс можно использовать для перебора над ними, и поставить предварительно заполненное значение в атрибут данных:

<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, итерация по элементам .myFormInput, и если они имеют значение, отличное от исходного, создайте элемент ввода с тем же именем в форме «призрак», а затем отправьте эту форму. Это будет отправлять только измененные элементы, и если по какой-то причине они отключены/отключены javascript, ваш изящно деградирует, потому что ваша оригинальная форма все равно будет отправлена.

EDIT: вы можете очень легко превратить это в плагин и использовать его на все формах, если у вас есть несколько экземпляров так вы просто должны сделать что-то вроде: jQuery('#userFacingForm').ghostForm();

+0

большого ответа. Я уже делаю нечто похожее. мы даем визуальное представление стороне запроса, создаваемой пользователем, поэтому на 'blur()' ввода i нажимаем его на div. Я могу включить здание призрачной формы одновременно. благодаря! –

Смежные вопросы