2014-04-01 18 views
2

我被一位同事給了一段代碼,它阻止了用戶在textarea中輸入有限的輸入。該代碼工作完全正常在jQuery中重寫if-else塊

var words = this.value.match(/\S+/g).length; 
if (words > 10) { 
    var trimmed = $(this).val().split(/\s+/, 10).join(" "); 
    $(this).val(trimmed + " "); 
} 
else { 
    $('#word_left').text(10-words); 
} 

工作演示:http://jsfiddle.net/3qHwG/

我已閱讀,jQuery的,可以在多種方式有效地寫,我想知道如果這個代碼可以在不被改寫的if-else或使用一種不同的方法?

感謝您提供的任何幫助,這將最終增加我的知識。

+3

「代碼工作得很好」,一切都在說。如果沒有損壞,請不要修復它 –

+0

學習處理問題的新方法有什麼危害? – Philtho

+0

@RC - 適合自己。有了你的心態,圖書館,框架和應用程序永遠不會努力改進自己或發展。 –

回答

1

這擴大的可讀性:

$("#cnt").on('keyup', function (e) { 
    var val = $(this).val(), 
     // if val is empty, set trimmed to empty array, which translates to 'zero' length 
     trimmed = val ? val.split(/\s+/, 10) : []; 

    if (!((e.keyCode || window.event.keyCode) === 8)) // if not a backspace 
     $(this).val(trimmed.join(" ")); 

    $("#word_left").text(10 - trimmed.length); 
}); 

DEMO

它執行的每一次,這是更好的,然後你.split只有一個操作,因爲你不僅執行一個操作總是,也是另一種如果話語限制超過,則進行操作。

希望它有幫助!

+0

一旦我到達最後的話,我有一個問題在代碼中使用退格 – Philtho

+0

@Philtho問題已解決。 –

+0

@Philtho新的小提琴 - > http://jsfiddle.net/GaurangTandon/3qHwG/6/ –