好的,我一直试图找到一个答案,但这几天都没有成功(在此过程中有一些措辞不当的问题)。因此,如果您知道已经讨论过这个问题的答案,请向我指出。
这是我的问题; 我正在使用一个使用kendo构建的表单(我没有创建它,这是我第一次使用kendo)。设计的一部分需要2个或更多可选字段,这些字段仅在满足条件时出现。例如,如果有人选择" 2部分组合"或" 3部分组合"在下拉菜单中,然后会显示适当数量的其他下拉项目,供用户定义其组合的不同部分。现在,这些额外的下拉菜单一直存在于页面上,只是在可见或隐藏之间切换。 但是当它们被隐藏时,它们的值也是空的。
我需要让这些字段仅在需要时才会被验证,而不是在不可用时进行验证。
这是一个代码示例,用于确定字段是可见还是隐藏
@model PhoenixOnlineMVC.Areas.EventManagement.Models.CompetitionPlannedElementItem
<script type="text/javascript">
@Html.Raw(Model.Code)
</script>
<tr style="vertical-align: top;">
<td>@Model.Index</td>
<td>@(Html.Kendo().DropDownListFor(m => m.SelectedTypeId)
.HtmlAttributes(new { style = "width:120px" })
.DataTextField("Text")
.DataValueField("Value")
.BindTo(Model.Types)
)</td>
<td>@(Html.Kendo().DropDownListFor(m => m.SelectedElementId)
.HtmlAttributes(new { style = "width:160px" })
.DataTextField("Text")
.DataValueField("Value")
.Events(events => events.Select(@Model.SelectedFunctionName))
.DataSource(source => source.Read(read => read.Action("GetCascadeElements", "Event")
.Data(@Model.DataFunctionName))
.ServerFiltering(true))
.Enable(false)
.AutoBind(false)
.CascadeFrom(@Model.TypeComboBoxName)
)</td>
<td style="width: 130px; overflow: auto">
@{
const string htmlHiddenAttributes = "width:120px; margin: 2px 4px 4px 0; display:none; ";
const string htmlVisibleAttributes = "width:120px; margin: 2px 4px 4px 0;";
if (Model.SelectedSuppElementId1 != null)
{
@Html.DropDownListFor(m => m.SelectedSuppElementId1, Model.SuppElements1, new { style = htmlVisibleAttributes })
}
else
{
@Html.DropDownListFor(m => m.SelectedSuppElementId1, Model.SuppElements1, new { style = htmlHiddenAttributes })
}
此代码来自.cshtml文件,该文件由主视图用于创建组件的页面。并且所有这些都包含在主页面上的Html.BeginForm中。
以上代码用于在主视图页面中多次创建SelectedSuppElementId字段的实例
如果您对解决方案没有建议,或许请向我提供其他有用的信息
答案 0 :(得分:0)
这FIDDLE会帮助你吗?
它只是查看css属性显示,并告诉您元素是显示还是隐藏。
JS
$('.hide').on('click', function(){
$('.hideme').hide();
});
$('.show').on('click', function(){
$('.hideme').show();
});
$('.validate').on('click', function(){
$('.putmehere').html('');
$('.dropdown').each(function(){
if( $(this).css('display') == 'none' )
{
$('.putmehere').append('hidden ');
}
else
{
$('.putmehere').append('shown ');
}
});
});