无法获得价值停用Div标签时

时间:2015-06-17 05:45:10

标签: javascript jquery html css asp.net-mvc-4

我使用MVC Razor设计了一个页面。其中我有一个div正在跟随

 <div class="row" id="DivDisableForView">
            <div class="col-md-4">
                <label for="" class="control-label">
                    Product
                </label>
                <br />
                @Html.DropDownListFor(m => m.ProductSeq, Model.products.ToSelectListItems(x => x.ProductName, x => x.Id.ToString(), "", true, "", "Select"), new { @class = "form-control" }).DisableIf(() => Model.IsReadOnly == true || !Model.IsAdd)
                @Html.HiddenFor(m => m.ProductSeq)
            </div>
            <div class="col-md-4" runat="server">
                <b>Exception Type</b>
                <br />
                @Html.EnumRadioButtonFor(m => m.enumExceptionType, true).DisableIf(() => Model.IsReadOnly == true || !Model.IsAdd)
                @Html.HiddenFor(m => m.enumExceptionType)
            </div>
            <div class="col-md-4" id="divTranMode">
                <b>Transaction Mode</b>
                <br />
                @Html.EnumRadioButtonFor(m => m.enumTransactionMode, true).DisableIf(() => Model.IsReadOnly == true || !Model.IsAdd)
                @Html.HiddenFor(m => m.enumTransactionMode)
            </div>
        </div>

        if (Model.IsAdd)
        {
            <div class="row" id="ViewButton">
                <button id="btnView" name="Submit" class="btn btn-default">
                    View
                </button>
            </div>
        }
    ...
    ...
    ...

如果单击视图按钮,则网格将根据上面给定的字段数据加载,并禁用以下字段,

  $("#DivDisableForView").prop('disabled', true);

之后,当我单击提交按钮时,则不存在禁用字段的数据,(即)值为空。那么如何避免它或如何禁用div标签而不使其值为null或为空。请任何人帮助

3 个答案:

答案 0 :(得分:2)

具有disabled="true"属性的Html元素不会在表单数据中发送。您只需隐藏div,数据仍会被发送以进行处理。使用:

$("#DivDisableForView").hide();

修改

  

不,我想在屏幕上显示字段

如果您希望保持字段可见,可以尝试将其设置为readonly

类似的东西:

$('#DivDisableForView input').attr('readonly', 'readonly');
//maybe also set color to gray
$('#DivDisableForView input').css("background-color", "#eee");

Readonly属性仍将在表单数据中发送。

编辑2

选择字段的解决方案:

这个JS可以解决选择问题:

    $('#DivDisableForView input, #DivDisableForView select').attr('readonly', 'readonly');
    //maybe also set color to gray
    $('#DivDisableForView input, #DivDisableForView select').css("background-color", "#eee"); 
    //selects
    $('#DivDisableForView select').attr('onfocus', 'this.defaultIndex=this.selectedIndex;');
    $('#DivDisableForView select').attr('onchange', 'this.selectedIndex=this.defaultIndex');

这是一个JSFiddle:https://jsfiddle.net/ddan/W4Km8/5340/

希望它有所帮助。

编辑3

对于广播和复选框,您可以执行以下操作:

$('#DivDisableForView :radio, #DivDisableForView :checkbox').click(function()        {
    return false;
});

参见示例(更新的JSFiddle):https://jsfiddle.net/ddan/W4Km8/5341/

答案 1 :(得分:1)

请隐藏您的div,而不是禁用。

使用此

$("#DivDisableForView").css('display', 'none');

$("#DivDisableForView").hide();

答案 2 :(得分:1)

使用.hide()或使用.css('display','none')申请,如果您只想禁用,请首先获取div的值并将其存储在变量中,然后禁用div。

var divvalue = $("#DivDisableForView").val();
$("#DivDisableForView").prop('disabled', true);