2012-03-02 57 views
0

有没有办法让这段代码更简化?Javascript分割结果简化

<input type="text" id="tags" /> 

var splittext = document.getElementById('tags').value.split(' '); 
if (document.getElementById('tags').value.split(' ').length < 2 || splittext[1] == '') { 
    alert("Two tags required."); 
} 

有另一种方法,使

splittext[1] == '' 

document.getElementById('tags').value.split(' ').something[1] 

避免使用线

var splittext = document.getElementById('tags').value.split(' ') 

这样做的目的是当用户输入一个标签,并它的空间,分裂检测到2值,我想避免空间被视为另一个标签,因为这将是,呃,作弊。

回答

1

修剪第一,并在任意数量的空格字符分割:

if (document.getElementById('tags').value.trim().split(/\s+/).length < 2) { 
    alert("Two tags required."); 
} 

您将需要创建String.trim功能,如果你想支持IE的一些版本虽然...但它是一个有用的功能具有。只是在你的js的顶部把这个实用的js文件,或者:

if(typeof String.prototype.trim !== 'function') { 
    String.prototype.trim = function() { 
     return this.replace(/^\s+|\s+$/g, ''); 
    } 
} 
+0

伟大的..,谢谢! – xiomai 2012-03-06 15:47:01

0

你应该改变你的代码,这对避免多次调用同一个DOM元素(要拆分两次同样的事情)

var splittext = document.getElementById('tags').value.split(' '); 
if (splittext.length < 2 || splittext[1] == '') { 
    alert("Two tags required."); 
} 

这是使用变量的全部要点,以避免多次调用相同的函数(具有相同的结果)。

0

像这样的东西应该做的伎俩:

var elem=document.getElementById('tags').value; 
if(elem.indexOf(' ')>-1 && elem.split(' ').length>=2) { 
    alert('Worked!'); 
} else if(!elem || elem.indexOf(' ')<0) { 
    alert('Two tags required.'); 
}