Как я могу динамически отображать кнопку загрузки, если пользователь устанавливает флажок в true? - PullRequest
1 голос
/ 28 июля 2011

Этим утром я борюсь с проблемой.Мне нужно, чтобы пользователи заполняли многошаговую форму.В некоторых шагах формы будут установлены флажки, которые при значении «true» должны динамически отображать кнопку загрузки.

Это что-то относительно простое для выполнения?

Обновление - теперь вы всененавидь меня.

У моего вида бритвы есть одна строка для генерации каждого шага.

@Html.EditorFor(x => currentStep,null,"")

Так что добавление jquery прямым способом - не вариант, я надеваюне думаю.

Моя ViewModel работает следующим образом.Он динамически генерирует список шагов на основе классов, которые реализуют интерфейс IStepViewModel.Итак ... Вы видите проблему, может быть?

  [Serializable]
    public class WizardViewModel
    {

        public String AccountNumber { get; set; }
        public int CurrentStepIndex { get; set; }
        public Boolean IsInitialized { get { return _isInitialized; } }

        public IList<IStepViewModel> Steps { get; set; }

        private Boolean _isInitialized = false;

        public void Initialize()
        {
            try
            {
                Steps = typeof(IStepViewModel)
                    .Assembly.GetTypes().Where(t => !t.IsAbstract && typeof(UploadViewModel).IsAssignableFrom(t)).Select(t => (IStepViewModel)Activator.CreateInstance(t)).ToList();
                _isInitialized = true;
                //rewrite this.  get the profile and wire them up or something.
                this.AccountNumber = Tangible.Profiles.DR405Profile.CurrentUser.TangiblePropertyId;

            }
            catch (Exception e)
            {

                _isInitialized = false;
            }
        }
    }

Ответы [ 3 ]

2 голосов
/ 28 июля 2011

Да, вы могли бы сделать (самое простое, если вы покажете свою разметку, мы можем предоставить более точный ответ, чтобы вы могли использовать один обработчик, который работает для всех кнопок):

$('#checkbox').change(function(){
    if($(this).is(':checked')){
        $('#button').show()
    }else{
        $('#button').hide()
    }
});
1 голос
/ 28 июля 2011

вам нужно назначить события проверки для каждого флажка, затем проверить значения и затем показать кнопку. Как то так (адаптируйся к нескольким флажкам)

$(init);
function init() {
    $("#Checkbox1").change(checkBoxChanged);//add check event to all check boxes
}

function checkBoxChanged(){
    if($("#Checkbox1").attr("checked"))//evaluate all checkbox conditions here
        $("#Button1").show();
    else
        $("#Button1").hide();
}

Обратите внимание, что эти обязательные значения идентификаторов ваших элементов. Если вы хотите установить событие для всех флажков одновременно, вы можете использовать селектор классов. Поэтому, если все ваши флажки имеют класс «MyCheckbox», вы можете назначить им одно и то же событие, например ...

$(".MyCheckbox").change(checkBoxChanged);

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

if($(".MyCheckbox").attr("checked"))//could work to evaluate all checked (not sure though)
    $("#Button1").show();
0 голосов
/ 28 июля 2011

Конечно!Просто сделайте что-то вроде:

$('#myCheckbox').toggle(function(){
  $('#uploadBtn').show()
},function(){
  $('#uploadBtn').hide()
})
...