- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我试图从我的模型中获取验证以实际禁用保存按钮,但在包含新输入时重新验证。任何人都知道尝试此操作的最佳方法。谢谢!我的方法存在的问题是,一旦它被禁用,它就不会返回状态。
这是main.js文件
(function () {
window.App = {
Models: {},
Collections: {},
Views: {},
Templates: {},
Router: {}
};
// MODEL
App.Models.User = Backbone.Model.extend({
defaults: {
firstName: 'first',
lastName: 'last',
email: 'Email',
phone: '222',
birthday: '07/22/1980'
},
validate: function (attrs) {
if (!attrs.firstName) {
return 'You must enter a real first name.';
}
if (!attrs.lastName) {
return 'You must enter a real last name.';
}
if (attrs.email.length < 5) {
return 'You must enter a real email.';
}
if (attrs.phone.toString().length < 10 ) {
//&& attrs.phone === int
return 'You must enter a real phone number, if you did please remove the dash and spaces.';
}
// if (attrs.birthday.length < 2) {
// return 'You must enter a real city.';
//}
},
initialize: function() {
this.on('invalid', function (model, invalid) {
console.log(invalid);
alert(invalid);
});
}
});
//var userModel = new App.Models.User();
//VIEW
App.Views.User = Backbone.View.extend({
el: '#user',
//model: userModel,
//tagName: 'div',
//id: 'user',
//className: 'userProfile',
//template: _.template($("#userTemplate").html()),
//editTemplate: _.template($("#userEditTemplate").html()),
initialize: function (){
},
render: function() {
this.template = Handlebars.compile($("#userTemplate").html());
this.editTemplate = Handlebars.compile($("#userEditTemplate").html());
this.$el.html(this.template(this.model.toJSON()));
return this;
},
events: {
'click button.edit': 'editProfile',
'click input.save': 'saveEdits',
'click button.cancel': 'cancelEdits'
},
editProfile: function () {
this.$el.html(this.editTemplate(this.model.toJSON()));
},
saveEdits: function () {
var form = $(this.el).find('form#updateUser');
this.model.set({
firstName : form.find('.firstName').val(),
lastName : form.find('.lastName').val(),
email: form.find('.email').val(),
phone: form.find('.phone').val(),
birthday: form.find('.birthday').val()
}, {validate: true} );
if(!this.model.isValid()) {
console.log('run');
$('.save').attr("disabled", "disabled");
} else {
console.log('run2');
alert('Changes have been made.');
$('.save').removeAttr("disabled");
return this.render();
}
},
},
cancelEdits: function() {
this.render();
}
});
//start history service
Backbone.history.start();
var user = new App.Views.User({model: new App.Models.User()});
user.render();
})();
这是 Jade 文件:
extends layout
block content
div.centerContent
h4 User goes here with equal before it no space
div#user
p #{firstName} #{lastName}
p #{email}
p #{phone}
p #{birthday}
button.edit Edit
script(id="userTemplate", type ="text/template")
p {{firstName}} {{lastName}} 1
p {{email}} 2
p {{phone}} 3
p {{birthday}} 4
button.edit Edit
script(id="userEditTemplate", type ="text/template")
div
form(action="#")#updateUser
input(type="text", class="firstName", value='{{firstName}}')
input(type="text", class="lastName", value='{{lastName}}')
input(type="email", class="email", value='{{email}}')
input(type="number", class="phone",, value='{{phone}}')
input(type="date", class="birthday", value='{{birthday}}')
input(type="submit", value="Save").save Save
button.cancel Cancel
hr
script(type="text/javascript", src="/js/main.js")
最佳答案
这里的问题是您正在为您的 model.set
方法调用 { validate: true }
选项,然后您随后调用了 model .isValid()
.
当您调用 model.set
并将 validate
选项设置为 true 时,Backbone.js 将不会设置您传递的属性,除非它们都通过验证。因此,当您调用 model.isValid()
时,模型已更改回以前的版本(在 .set
调用之前)。 model.isValid()
自动调用 model.validate()
方法并将模型的当前属性传递给它。
在您的示例中,通过 isValid
方法传递给 validate
的值是模型的当前(有效)属性。因此,isValid()
总是会验证为真。这将导致您永远无法到达您的 else
子句。
这里的解决方案不是调用 isValid
来查看您的模型是否有效(在将 validate: true
传递给 set
方法之后)检查 model.validationError
的值。如果 model.validationError
是真值,那么您就知道您的模型无效。
这是一个 JSFiddle举例说明如何做到这一点,并提供一些文档。
关于javascript - Backbone.js model.isValid() 方法不为无效模型返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17606925/
这个问题是关于理解为什么一种技术比另一种更好。在 Angular 4/5 中,在模板中,您可以通过执行以下操作来实现相同的目的: 1) *ngIf-else 语法 content here
Page.IsValid 和 args.IsValid 是否相互依赖? 我的意思是,如果 args.IsValid="true",Page.IsValid 必须为“true”。 当然反过来说:如果 P
我正在编写一个 Controller 并为其进行单元测试,当时我遇到了两种方法(我认为同样有效)来做某事。我的所有模型都有一个 IsValid 属性,我可以检查该属性以询问模型是否有效。 在回发到 C
如我的问题所述。我真的不明白 date-fns 的 isValid 和 luxon 的 isValid 之间的区别。我有一个日期字符串变量和一个用 new Date() 调用日期字符串的变量。 我的日
这个问题已经有答案了: Getting AbstractMethodError while creating a connection to Oracle9 database with Tomcat
我正在使用自定义 register在 react-hook-form ,我无法获得 formState.isValid成为 true当我在输入中输入文本时(因此满足 required 条件)。 这是一
是否可以查看 knockout-validation plugin 中是否只有一个属性有效? 我在文档中看不到任何对它的引用,只能查看整个模型是否有效。 例如,我希望计算出的 observable 具
在Connection的方法中,我应该给它多少超时时间? :S 我不知道正常的超时是多少,应该花多长时间? :) 我不想要 isValid() 返回 false 如果它可以返回 true 如果它有更多
使用IsValid()验证电子邮件地址或URL格式是否可以防止XSS?指定其他格式时,它会否定XSS吗? 最佳答案 有效的URL仍可以包含攻击媒介: #isValid("url", "http://
我可以使用 isValid(0) 函数来检查连接是否仍然有效(alive)吗? 我遇到以下异常: com.mysql.jdbc.exceptions.jdbc4.CommunicationsExcep
我正在使用 ASP.NET-MVC Core 2.1,我的代码中有这个 ViewModel 类 public class HomeViewModel { public
我有一个非常简单的 MVC 2 表单。它有两个下拉菜单,用户和角色。无论我选择什么,员工下拉列表都会通过验证,而角色下拉列表不会通过验证。尽管我计划实现一个,但没有默认的“空”选项,这就是为什么我需要
我正在尝试在文件生成程序中为某些状态建模, 在一个点上 : 我想检查数据的当前状态 如果数据有效,我想继续 否则,我想通知用户无法继续的原因 伪代码将类似于: if(isValid()){ w
我正在尝试在 this video 的帮助下根据属性的可用性验证名为 Book 的模型。我正在尝试按照有关如何验证 Backbone.js 模型的说明进行操作,但是当我使用 .isValid() 方法
我有一个 javascript 类 c我正在尝试调用它的方法 isValid()关于onClick输入提交按钮的事件。我有c目前在我的提交按钮下方的一组脚本标签中。当我点击提交按钮时,我得到 Unca
我正在为 Com 执行一项小型任务。科学课,这是一门初级课,但我之前没有编码经验,所以我连基础知识都吃力。我会问很多问题,我很抱歉。我们被要求创建一个方法来遍历字符串的所有字符,看看它们是 A G C
我想从 html 页面上的 dropdownList 获取参数并将其发送到我的 Controller ,创建新的模型对象,并将其插入数据库。 这是我的 Controller (创建 My_Model
尝试创建一个简单的 Jmeter 5.0 测试以使用 JDBC 连接配置连接到数据库。无法连接到我的本地 mySql 数据库。 [jdbc:mysql://localhost:3306]。我可以使用
我几乎总是想在回发时检查 ModelSate.IsValid 是否被调用。而且必须在每次回发开始时进行检查违反了 DRY 原则,有没有办法让它自动检查? 例子: [HttpPost("Register
我的模型类如下: public class PostInputViewModel { [Required] [MinLength(1)] [Ma
我是一名优秀的程序员,十分优秀!