2012-03-02 114 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.'); 
}