Javascript 验证文本区域的每一行是否以某个内容开头

Javascript 验证文本区域的每一行是否以某个内容开头,javascript,jquery,Javascript,Jquery,我正在尝试验证textarea,确保每一行都以“http://”开头: 当url错误时,它会执行else语句,但如果正确,则不会执行该语句 有什么问题吗 不要使用$。每个迭代一个数组。使用以下命令: for(var i = 0; i < links.length; i++) { if(links[i].substring(0, 7) !== 'http://' && links[i].substring(0, 8) !== 'https://') {

我正在尝试验证textarea,确保每一行都以“http://”开头:

当url错误时,它会执行else语句,但如果正确,则不会执行该语句


有什么问题吗

不要使用
$。每个
迭代一个数组。使用以下命令:

for(var i = 0; i < links.length; i++) {
    if(links[i].substring(0, 7) !== 'http://' && links[i].substring(0, 8) !== 'https://') {
        $('p').text('Error!');
        return false;
    }
}
for(var i=0;i

由于(
$('p'))的原因,它不工作。在本例中,
这个
只是一个字符串文本

after
函数的第一个参数应该是HTML字符串、DOM元素或jQuery对象,以便在匹配元素集中的每个元素之后插入


这里有一个

它不起作用,因为
这个
引用了一个字符串对象。
after
函数需要一个jQuery对象或字符串。奇怪的是,在javascript中,字符串与字符串对象不同。else语句之所以有效,是因为当您将常规字符串添加到它时,
正在幕后转换为字符串。但是,if失败,因为在这种情况下,
仍然是字符串对象。您可以通过几种方式修复它,但以下是其中之一:

$('button').click(function(){
    var links = $('textarea').val().split('\n');

    $.each(links,function(){
        if( this.substr(0, 7) == 'http://' )
            $('p').after(''+this);
        else
            $('p').after('error: '+this+'<br/>');
    });
    return false;
});
$(“按钮”)。单击(函数(){
var links=$('textarea').val().split('\n');
$.each(链接、函数(){
if(this.substr(0,7)='http://')
$('p')。在(''+此之后);
其他的
$('p')。之后('error:'+this+'
'); }); 返回false; });
编辑

这里有一个指向另一个SO问题的链接,该问题更详细地讨论了这一点

$('button').click(function(){
    var links = $('textarea').val().split('\n');

    $.each(links,function(){
        if( this.substr(0, 7) == 'http://' )
            $('p:last').after("<p>" + this + "</p>");
        else
            $('p:last').after('error: '+this+'<br/>');
    });
    return false;
});
$(“按钮”)。单击(函数(){
var links=$('textarea').val().split('\n');
$.each(链接、函数(){
if(this.substr(0,7)='http://')
$('p:last')。在(“”+this+”

”)之后; 其他的 $('p:last')。之后('error:'+this+'
'); }); 返回false; });
我想这样会好一点,试试看

$('button').click(function(){
    var links = $('textarea').val().split('\n');

    $.each(links,function(){
        if( this.substr(0, 7) == 'http://' )
            $('#mydiv').append(this + '<br/>');
        else
            $('#mydiv').append('<span style="color:red;">error: '+this+'</span><br/>');
    });
    return false;
});
$(“按钮”)。单击(函数(){
var links=$('textarea').val().split('\n');
$.each(链接、函数(){
if(this.substr(0,7)='http://')
$('#mydiv')。追加(this+'
'); 其他的 $('#mydiv').append('error:'+this+'
'); }); 返回false; });
HTML:


提交

fiddle:

你能展示一下你写的代码吗?没有它很难回答…@Sparky这个jsfiddle就是代码对不起,我不知道链接是什么。看起来你已经得到了一些答案…我很好奇-为什么不
$。每个
?为什么不在(this);}之后使用
$.each(links,function(){$('p'))工作?--nvm,刚刚看到了@Chris N的解释。@Mathematic.coffee:事实上,他的解释部分是错误的。布莱恩·格拉兹解释得更好。@minitech@你的新编辑,但这两个都需要,对吗?@user1099531:不,不会。我正在使用
==;如果a不是b,a也不是c。
<textarea></textarea>
<button>Submit</button>
<div id='mydiv'></div>