除了使用JS之外,如何清除文本框

时间:2017-01-12 20:37:37

标签: javascript c# jquery asp.net-mvc

我正在使用MVC构建应用,此问题与days=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'] daydict = dict((day[:3],day)for day in days) 页面和操作有关。

假设我的模型有2个小数属性以及其他属性,但对于此示例不是必需的:

Create

显然这些属性是不可为空的,因此在我的public class TestClass { public int ID { get; set; } public decimal DecimalProperty { get; set; } public decimal SecondDecimalProperty { get; set; } // more properties below this, but deemed unnecessary for this question } 视图中,它们在页面加载时显示为如此(忽略第二个文本框):

enter image description here

现在我的目标是清除那些文本框,所以它们只是空白..所以我用JS来实现它:

Create

我在这些输入字段上放了一个名为$(".clear-textbox").val(""); 的类..完美地工作..但是现在我的clear-textbox我有条件语句检查其他字段是否有效,如果没有返回对象..就像这样:

HttpPost Create Action

这会导致if (object.property== 0) { ModelState.AddModelError("property", "This field is required!"); return View(object); } 视图重新显示用户已输入的值,以及需要更改的一个属性下面的错误消息..这就是问题所在。重新加载Create视图后,Create的脚本也是如此,导致clear-textboxDecimalProperty为空文本框...而不是保留用户最初为他们输入。

所以我的问题是,除了使用javascript之外,还有另一种清除文本框中十进制属性的方法吗?

感谢任何帮助。

更新

这是cshtml。

SecondDecimalProperty

3 个答案:

答案 0 :(得分:1)

要么你必须通过Javascript加载,如下面的

        function createButton(context, func){
            var button = document.createElement("input");
            button.type = "button";
            button.value = "im a button";
            button.onclick = func;
            output.appendChild(button);
        }
    button.addEventListener("click",function(){
 alert("did something");
 });

OR

您可以创建自己的 MVC Html Helper ,根据您的特殊需求进行操作。如果您想要代码,请告诉我......

You can also refer this link

答案 1 :(得分:0)

您可以将默认值设置为文本框的data-属性,并仅在匹配时将其清除。像:

$(".clear-textbox").each(function(){
    var $this = $(this);
    if( $this.val() == $this.data().defaultvalue ) $this.val('');
});

答案 2 :(得分:0)

如果不知道文本框的呈现方式,很难得出答案。但是,我假设您使用的是

@Html.TextBoxFor

@Html.EditorFor

有两种方法可以做到这一点。

1。将DisplayFormat属性添加到模型字段并使用EditorFor:

public class TestClass
{
    public int ID { get; set; }
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:#.#}")]
    public decimal DecimalProperty { get; set; }
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:#.#}")]  
    public decimal SecondDecimalProperty { get; set; }
}


@Html.EditorFor(model => model.DecimalProperty)

2。使用内联格式属性:

@Html.TextBoxFor(model => model.DecimalProperty, "{0:#.#}")