2013-09-14 3 views
0

Ι имеет форму, в которой у него есть элемент ввода, где пользователь может ввести URL-адрес - это происходит, когда он нажимает кнопку редактирования, после чего появляются поля ввода.скрытие элемента ввода при отмене

Если пользователь начинает вводить URL-адрес и нажимает кнопку отмены, то когда бы он ни печатался, он становится нулевым, а поле ввода снова скрывается от представления (класс добавляется к элементу с отображением: none).

И вот где проблема: Если пользователь набирает что-то и нажимает кнопку сохранения, данные (url) отправляются на сервер с помощью запроса ajax. Это означает, что в следующий раз, когда формы загружаются, пользователь будет см. представленный URL. Если в этот момент вы захотите отредактировать форму и нажмите кнопку отмены, представленный URL-адрес скрыт от просмотра ... что-то нежелательное, конечно, потому что мы говорим здесь о представленных данных.

Как я могу отличить один от другого, - данные и непредставленные данные - отменить.

Вот код, первый связан с нажав на кнопку отмены и во-вторых, с помощью функции, которая добавляет классы для элемента ввода:

$('#canceladrs').click(function() { 
var urlcancel=$.trim($('input#wwwaddress').val()); 
save=2; 
close_url(save,urlcancel);  
closeaddress(); 

}); 

here is the close_url() function 

function close_url(savearg,urlarg,cancelarg) 
{ 
console.log(urlarg); 
if(savearg===1)// save button clicking here 
    { if(urlarg==='') 
      { 
       $('input#wwwaddress').addClass('hideurl'); 
       $('label[for=url]').addClass('hideurl'); 
       $('input#wwwaddress').val(null); 
      } 
     else if(urlarg!=='') 
      { 
       $('input#wwwaddress').removeClass('hideurl'); 
       $('label[for=url]').removeClass('hideurl'); 
       $('input#wwwaddress').val(urlarg); 
      } 
    } 
else if(savearg===2)//cancel button clicking here 
{if((urlarg!=='')||(urlarg==='')) 
     { 
      $('input#wwwaddress').addClass('hideurl'); 
       $('label[for=url]').addClass('hideurl'); 

     } 
} 


} 

} 

Как вы видите выше, я пытаюсь отметить щелчки cancel кнопка настройка save = 2.

+0

Я не совсем понимаю вопрос. Можете ли вы прояснить, когда и почему вы скрываете и показываете вещи? Кроме того, у jQuery уже есть 'hide' и' fadeOut', вам не нужно создавать свои собственные классы для этого. –

+0

Я скрываю поле, когда оно пустое, или когда пользователь начал набирать что-то, в этот момент он нажал кнопку отмены. Я не хочу, чтобы элемент скрывался, когда: поле ввода имеет в качестве значения переданные данные в db, пользователь нажимает кнопку редактирования, чтобы изменить поле, и ТОГДА он нажимает кнопку отмены, чтобы прекратить редактирование формы ... В ЛИТЕРАТУРЕ CASE Я НЕ ХОЧУ СКРЫТЬ, так как он должен постоянно отображать представленные данные. –

ответ

1

Хорошо, основываясь на вашем комментарии, вы не хотите скрыть ввод, если в нем есть текст. В этом случае позвольте мне сослаться на фрагмент кода вы предоставили:

if((urlarg!=='')||(urlarg==='')){ 
      $('input#wwwaddress').addClass('hideurl'); 
      $('label[for=url]').addClass('hideurl'); 
} 

Логика здесь читает, если urlarg не имеет значения, или если urlarg имеет значение добавить класс, скрывающий вход и этикетку.

Таким образом, вы скрываете ввод и метку во всех случаях.

Если вы не хотите скрывать элементы ввода, когда у них есть контент, не добавляйте условие urlarg !== ''.

Я также рекомендую добавить отдельный обработчик событий для отмены и сохранения событий, так что вам не нужно отправлять специальные функции, такие как save.

Кроме того, как я уже упоминал, jquery уже имеет hide, не нужно делать это самостоятельно.

Наконец, вы можете обрезать строку urlarg, потому что если пользователь вводит просто пробел, это не важно, но ваш скрипт будет считать его имеющим значение.

+0

Позвольте мне кое-что уточнить, приведенный выше код предназначен для данных, НЕ ПРЕДОСТАВЛЯЕМЫХ ... почему элементы скрыты в обоих случаях. У меня нет проблем с этим.Моя проблема заключается в нажатии кнопки «Отмена», когда элемент ввода открывается для редактирования и имеет значение для представленных данных. –

+0

. Затем вам понадобится дополнительный код для обработки случая, когда нажата кнопка отмены, чтобы отображать элементы, когда у них есть контент. Как заявление else. Но я думаю, вам нужно разбить этот код на отдельные обработчики событий, а затем повторно использовать функцию. –

+0

Теперь, я думаю, вы понимаете. Вы не должны забывать, хотя есть два случая, когда у нас есть контент, но один отличается от другого. В одном случае контент представляет собой данные (взятые из db), а второй - когда нет данных, и пользователь начинает заполнять поле, а затем решает отменить изменение своего ума. –

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