2014-09-24 85 views
0

我想要一個具有文本框的網頁。文本框下方有兩個按鈕,分別爲「按字母排序」和「按數字排序」。我希望它可以讓用戶在框中輸入的內容排序。如果用戶輸入數字和字母,它將取消排序,並會彈出一個提示,說「不能是字母和數字」。當點擊「按字母排序」按鈕時,JavaScript代碼將按字母順序激活並排序。 「按數字排序」按鈕也一樣。我似乎無法得到文字/數字進行排序。數組排序:字母數字和數字

HTML:

<html> 
<head> 
<title>Sorter</title> 
<script type="text/javascript" src="sorter.js"></script> 
</head> 
<body> 
<form> 
Words/Numbers to Be Sorted:<input type="text" id="textbox" size="35"/> 
<br/> 
<button type="button" onclick="sortAbc()">Sort Alphabetically</button> 
<button type="button" onclick="sortNumber()">Sort Numerically</button> 
<br/> 
<h1>Each number/word shall be separated by a space.</h1> 
</form> 
</body> 
</html> 

的JavaScript:

function sortAbc() { 
var captureText = document.getElementById('textbox'); 
captureText.sort(); 
//Help! How to make alert pop up when numbers and letters are typed? 
} 

function sortNumber() { 
var captureNumb = document.getElementByid('textbox'); 
captureNumb.sort(function(a, b){return a-b}); 
//Same problem here! How to make alert pop up when numbers and letters are typed? 
} 
+0

哪裏是你的方法數字或單詞?無論如何,你的jQuery在哪裏?您必須使用文本輸入框中的'onChange'事件... – algorhythm 2014-09-24 20:08:13

+0

僱用開發人員或進行盡職調查並在您要求他人完成工作之前進行體面的嘗試。 – 2014-09-24 20:10:41

+0

我認爲對您正在輸入的字段進行排序非常複雜。你可能會等待幾秒鐘,或者把焦點留在這個領域,而不是排序。如果你想在輸入的時候對它進行排序,那麼你應該得到內容(字符串)並將它分成空格。您可以對結果數組進行排序。然後返回到字符串並在文本框中。但是,如果你想在排序時設置光標的位置......? – algorhythm 2014-09-24 20:11:33

回答

1

這裏一個完滿成功活樣本。

  • 檢查使用正則表達式(.match
  • 使用陣列功能sort

function sortAbc() { 
 
    var captureText = document.getElementById('textbox'); 
 
    if (captureText.value.match(/(?:^|)[\d]+(?: |$)/)) { 
 
    alert("no digits"); 
 
    return; 
 
    } 
 
    var words = captureText.value.split(" "); 
 
    captureText.value = words.sort().join(" "); 
 
} 
 

 
function sortNumber() { 
 
    var captureNumb = document.getElementById('textbox'); 
 
    if (captureNumb.value.match(/[^\s\d]/)) { 
 
    alert("no letters"); 
 
    return; 
 
    } 
 
    var numbers = captureNumb.value.split(" "); 
 
    captureNumb.value = numbers.sort(function (a, b) { return a - b }).join(" "); 
 
}
<html> 
 
<head> 
 
<title>Sorter</title> 
 
<script type="text/javascript" src="sorter.js"></script> 
 
</head> 
 
<body> 
 
<form> 
 
Words/Numbers to Be Sorted:<input type="text" id="textbox" size="35"/> 
 
<br/> 
 
<button type="button" onclick="sortAbc()">Sort Alphabetically</button> 
 
<button type="button" onclick="sortNumber()">Sort Numerically</button> 
 
<br/> 
 
<h1>Each number/word shall be separated by a space.</h1> 
 
</form> 
 
</body> 
 
</html>

+0

由於sport()返回數組,你可以這樣做:split(「」)。sort(comparator).join(「」)這是更優雅的imho。 – Centril 2014-09-24 20:23:47