我一直试图自己解决这个问题,但最终却无法长时间工作。
我目前正在关注Meteor.js的发现流星书。
我注意到,在没有http://
的情况下提交帖子会将链接链接到localhost:3000/submittedurl
。
我希望meteor在提交时自动将http://
添加到网址。从逻辑上讲,当输入字段中包含方案时,它不会添加http://
。
//post_submit.js
Template.postSubmit.created = function() {
Session.set('postSubmitErrors', {});
};
Template.postSubmit.helpers({
errorMessage: function(field) {
return Session.get('postSubmitErrors')[field];
},
errorClass: function(field) {
return !!Session.get('postSubmitErrors')[field] ? 'has-error' : '';
}
});
Template.postSubmit.events({
'submit form': function(e) {
e.preventDefault();
var post = {
url: $(e.target).find('[name=url]').val(),
title: $(e.target).find('[name=title]').val()
};
var errors = validatePost(post);
if (errors.title || errors.url)
return Session.set('postSubmitErrors', errors);
Meteor.call('postInsert', post, function(error, result) {
// display the error to the user and abort
if (error)
return throwError(error.reason);
// show this result but route anyway
if (result.postExists)
throwError('This link has already been posted');
Router.go('postPage', {_id: result._id});
});
}
});
答案 0 :(得分:0)
嗯,实际上这是一个简单的javascript问题,不一定与Meteor相关。
例如,此问题Prepending "http://" to a URL that doesn't already contain "http://"的答案提供了一种方法:
checkForProperURLPrefixAndFixIfNecessary = function(testUrl) {
var prefix = 'http://';
if (testUrl.substr(0, prefix.length) !== prefix) {
testUrl = prefix + testUrl;
}
return testUrl;
}
或者您可以看到不同方法的其他答案。我认为JS-URI库方法更安全。
所以,让我们假设您在源代码中声明了checkForProperURLPrefixAndFixIfNecessary(testUrl)
函数,如上所示,然后您可以更改
var post = {
url: $(e.target).find('[name=url]').val(),
title: $(e.target).find('[name=title]').val()
};
到
var post = {
url: checkForProperURLPrefixAndFixIfNecessary( $(e.target).find('[name=url]').val() ),
title: $(e.target).find('[name=title]').val()
};
但是一旦你完成了探索流星书,这是 学习Meteor的最佳方式,请查看精彩的https://github.com/aldeed/meteor-simple-schema包或只搜索 schema < / {>> 验证 https://atmospherejs.com/,以便更有效地检查用户输入的类型和结构。