如果用户将复选框设置为true,如何动态显示上传按钮?

时间:2011-07-28 12:59:30

标签: c# jquery asp.net-mvc-3 uploadify

今天早上我正在与一个问题作斗争。我需要让用户填写多步骤表单。表单的某些步骤将具有复选框,当设置为“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 个答案:

答案 0 :(得分:2)

是的,你可以这样做(最简单的是,如果你展示你的标记我们可以提供更多的detiled答案,这样你就可以使用一个适用于所有按钮的处理程序):

$('#checkbox').change(function(){
    if($(this).is(':checked')){
        $('#button').show()
    }else{
        $('#button').hide()
    }
});

答案 1 :(得分:1)

您需要为每个复选框分配检查事件,然后检查值,然后显示按钮。像这样的东西(适应多个复选框)

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

请注意,这些元素需要这些ID值。如果要同时为所有复选框设置事件,可以使用类选择器。因此,如果您的所有复选框都有一个“MyCheckbox”类,您可以为它们分配相同的事件,例如......

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

不确定下一点,但也许值得尝试这样的事情......

if($(".MyCheckbox").attr("checked"))//could work to evaluate all checked (not sure though)
    $("#Button1").show();

答案 2 :(得分:0)

当然!做一些像:

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