Asp.net core Razor页面显示隐藏输入的验证
我试图为十进制数提供用户友好的输入(以百分比表示),并能够进行验证。我被卡住了,因为如果关联的输入被隐藏,将不会显示的asp验证 当前的技术是在仅显示字段上使用autonumeric.js进行客户端格式化,该字段被复制到要保存到db的字段中 如何获取要显示的验证消息 LoanEstimate.csAsp.net core Razor页面显示隐藏输入的验证,asp.net-core,.net-core,razor-pages,Asp.net Core,.net Core,Razor Pages,我试图为十进制数提供用户友好的输入(以百分比表示),并能够进行验证。我被卡住了,因为如果关联的输入被隐藏,将不会显示的asp验证 当前的技术是在仅显示字段上使用autonumeric.js进行客户端格式化,该字段被复制到要保存到db的字段中 如何获取要显示的验证消息 LoanEstimate.cs [NotMapped] public string RateDisplayOnly { get; set; } [Range(0,1,ErrorMessage="Rate must be
[NotMapped]
public string RateDisplayOnly { get; set; }
[Range(0,1,ErrorMessage="Rate must be between 0.000% and 100.00%")]
[DisplayFormat(DataFormatString = "{0:p}")]
[Required]
public decimal? Rate { get; set; }
Create.cshtml
<div class="form-group">
<label asp-for="LoanEstimate.Rate" class="control-label"></label>
<input asp-for="LoanEstimate.RateDisplayOnly" class="form-control autonumeric-display-only autonumeric-percent" />
<input asp-for="LoanEstimate.Rate" class="form-control" type="hidden"/>
<span asp-validation-for="LoanEstimate.Rate" class="text-danger"></span>
</div>
问题隐藏LoanEstimate.Rate的输入时,不会显示验证消息
注意:这里是未隐藏时正确显示的使用
$.validator.setDefaults
,下面是一个演示:
视图:
结果:
谢谢!按submit时确实会触发该消息。我注意到,当输入字段未隐藏时,验证消息会在我从字段中签出时触发,但是使用此方法时,它仅在按submit时触发。有没有办法让它在我制表符退出时触发?我已经更新了我的答案,在
上添加了模糊功能,当元素失去焦点时,验证$(“#Rate”)。太棒了!你在上面的评论中的建议是有效的,注意:你在答案中的代码示例并不有效。请替换为类似$(“.autonumeric display only”).blur(函数(){var str=this.id var getThis=str.substring(0,str.indexOf(“DisplayOnly”))$(“#”+getThis.valid());(我相信文件里面已经准备好了)我会记下答案。谢谢你的帮助!啊,但是您的示例与您的代码配合使用,所以很好,标记为答案,谢谢!
$(document).ready(function ($) {
//autonumeric.js field formatting
const anElement = AutoNumeric.multiple('.autonumeric-currency', {
currencySymbol: "$"
});
const anElement2 = AutoNumeric.multiple('.autonumeric-percent', {
decimalPlaces: 3,
rawValueDivisor: 100,
suffixText: "%"
}
)
$(".autonumeric-display-only").on('keyup', function () {
var str = this.id
var getThis = str.substring(0, str.indexOf("DisplayOnly"))
$("#" + getThis).val(AutoNumeric.getNumericString("#" + this.id));
});
});
<form method="post">
<div class="form-group">
<label asp-for="Rate" class="control-label"></label>
<input asp-for="RateDisplayOnly" class="form-control autonumeric-display-only autonumeric-percent" onblur="validateRate()"/>
<input asp-for="Rate" class="form-control" hidden />
<span asp-validation-for="Rate" class="text-danger"></span>
</div>
<input type="submit" value="submit" />
</form>
function validateRate() {
$("#Rate").valid();
}
$.validator.setDefaults({
ignore: [],
// other default options
});
$(document).ready(function ($) {
//autonumeric.js field formatting
const anElement = AutoNumeric.multiple('.autonumeric-currency', {
currencySymbol: "$"
});
const anElement2 = AutoNumeric.multiple('.autonumeric-percent', {
decimalPlaces: 3,
rawValueDivisor: 100,
suffixText: "%"
}
)
$(".autonumeric-display-only").on('keyup', function () {
var str = this.id
var getThis = str.substring(0, str.indexOf("DisplayOnly"))
$("#" + getThis).val(AutoNumeric.getNumericString("#" + this.id));
});
});