2013-07-22 2 views
3

Что я хочу спросить, у меня есть флажок с полным экраном, и когда я проверил его, два поля ввода, которые являются шириной и высотой, должны быть отключены, а значения этого значения равны нулю , Я делаю это хорошо с j-запросом, но когда я отправляю форму с полноэкранным просмотром, даже два значения входных полей равны 0, они сохраняются с предыдущими значениями этих двух полей ввода.jquery property disabled и input value form submit

Любая помощь?

$("#fullscreenCheckBox").on("change", function() { 
     if($(this).prop("checked")) { 
      $("#height").prop("disabled", true); 
      $("#height").val(""); 
      $("#width").prop("disabled", true); 
      $("#width").val(""); 

     } else { 
      $("#height").prop("disabled", false); 
      $("#height").prop("disabled", false); 
     } 
    }); 

Значения устанавливаются в нуль, как его, но когда форма отправлена ​​оно не держать его

+0

Покажите нам некоторые html и ваши JQuery. –

+0

задайте вопрос с примером кода. –

+0

@KamilT коды есть сейчас – canpoint

ответ

11

Если вход имеет свойство disabled='true' на момент подачи формы, это значение isn ' t отправлено с формой. Вы можете либо попытаться включить его в момент отправки формы в JQuery, как:

$("#yourFormId").submit(function(){ 
    $("#YourInputId").prop('disabled', 'false'); 
}); 

Другой подход заключается в использовании много дополнительных скрытых полей для каждого «видимого» вход, как <input id='hiddenInputId' type='hidden' > и установить тир значения в jQuery. Они не будут видны пользователю, но их значения по-прежнему будут отправляться с помощью формы submit. Пример:

$("#yourInputId").change(function(){ 
    $("#hiddenInputId").val($(this).val())); 
}); 

После этого при обработке представления вы просто игнорируете обычные входные значения и работаете только с hiddens.

Лично я считаю, что второй вариант (со скрытыми входами) намного лучше. Вы можете даже расширить его, и вместо того, чтобы впечатывать свой элемент DOM-элемента в change(), вы можете добавить атрибут данных к каждому элементу, а затем убить всех птиц одним камнем :)

+0

Я знаю, что могу отправить его со скрытыми полями, но не существует способа отправить его без скрытия. Я не использую форму ajax submit, поэтому не могу включить ее во время отправки – canpoint

+0

Вы можете включить ее, просто посмотрите на первый пример кода в этом ответе.Этот код запускает функцию при отправке формы. Он повторно активирует ввод, и после этого процесс отправки продолжается;) –

+0

nope @KamilT, он по-прежнему отправляет старые значения, даже я включил их во время отправки – canpoint

0

Я думаю, что происхождение этой проблемы является то, что значения из полей ввода инвалидов не размещаются на сервере , Что вы можете делать с серверной стороны, проверьте, были ли значения размещены или нет, если не установлено значение 0.

+0

Когда я удаляю отключить код jquery, он действительно хорошо работает :) – canpoint

+0

Да, потому что отключенный атрибут предотвращает отправку этих значений. – nubinub

+0

, поэтому вы имеете в виду, что он предотвращает публикацию нового значения входного поля или? потому что он публикует старое значение, которое он изменяется – canpoint