2017-04-26 167 views
-1

我有一个带有只读属性的文本框。这不是什么大问题,但我想我会问,那么是否有办法制作该文本框,以便用户无法选择它并将其光标放在该文本框中?使只读文本框不可选

被禁用的属性会这样做,但是那个文本框并没有被提交到表单中。

是否有js/jquery解决方案?

代码片段


<form> 
    <div class="col-md-9"> 
     @Html.EditorFor(model => model.Time, new { htmlAttributes = new { @class = "form-control clear-textbox create-form-txtbox time-txtbox", @readonly = "readonly" } }) 
     @Html.ValidationMessageFor(model => model.Time, "", new { @class = "text-danger" }) 
    </div> 

    <input type="submit" value="Submit" /> 
</form> 

任何帮助表示赞赏。

+0

@StephenMuecke啊,这工作。谢谢,发布为答案,我将接受 –

回答

-1

我已经使用斯蒂芬的评论作为答案,它的工作原理。

我已经创建了一个隐藏的输入字段来提交给服务器,但用户将只能看到隐藏的输入字段持有的值的禁用文本框。

0

试试这个。 它为我工作。 用此控件替换@ Html.EditorFor。

<input type="text" value="@Model.Time" id="Time" name="Time" class="form-control" readonly /> 
+0

这就是使用@ Html.EditorFor在页面上呈现的内容 –

0

使用内嵌onkeydown="return false;"属性

,或者如果你想有一个JavaScript的解决方案

$('#someId').keydown(function(e) { 
    e.preventDefault(); 
    return false; 
}); 
0

没有必要对任何JavaScript。你可以只包括属性的一个隐藏的输入,然后呈现禁用文本框(或仅仅是文本风格的元素,看起来像一个文本框)

// hidden input so the value is submitted 
@Html.HiddenFor(m => m.Time) 
// disabled textbox to display the value and prevent any interaction 
@Html.EditorFor(m => m.Time, new { htmlAttributes = new { disabled = "disabled, @class = "form-control clear-textbox create-form-txtbox time-txtbox" } }) 

注意没有点包括@Html.ValidationMessageFor()