2014-09-24 79 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