2014-11-20 21 views
0

我一直在试图自己想象这个,但最终无法在很长时间过后。发现流星:将http://自动添加到输入的URL

我目前正在关注Meteor.js的Discover Meteor Book。

我注意到提交没有http://的帖子会链接到localhost:3000/submittedurl

我想让流星在提交时自动将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

请准确,并解释更多关于问题 – ajduke 2014-11-20 17:51:54

回答

0

那么,其实这是一个简单的javascript问题,不一定与流星有关。

举例来说,这个问题的答案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() 
}; 

但是,一旦你通过探索流星书,完成这是学习流星的最佳方式,看看真棒https://github.com/aldeed/meteor-simple-schema包或只搜索架构验证https://atmospherejs.com/为更加健壮的方式检查用户输入适当的类型和结构。

+0

此外,url方案可以有不同的上下文,如http,https,ftp,scp,mailto等,我宁愿让用户知道通过显示错误提示,而不是只是继续和*固定*输入假设它是http。 – 2014-11-20 18:58:46

+0

非常感谢你Serkan Durusoy。我是一名设计师,尝试学习网络开发,以进一步提高我在网络应用程序创作方面的知识和技能。我会尽力去解决这个问题! – 2014-11-21 11:01:46

+0

发现流星是一个很好的资源@SangYooKim和完成后,请确保您通读官方http://docs.meteor.com – 2014-11-21 19:14:53