[英]How to select random textboxes in Jquery?
I have say, 5 textboxes of tag <textarea>
. 我说过,标签
<textarea>
5个文本框。 How can I randomly select 50% of the textboxes? 如何随机选择50%的文本框? Each text box has a different ID.
每个文本框都有一个不同的ID。 For example:
例如:
<textarea id = "text1" name= "name1"></textarea>
<textarea id = "text2" name= "name2"></textarea>
<textarea id = "text3" name= "name3"></textarea>
<textarea id = "text4" name= "name4"></textarea>
<textarea id = "text5" name= "name5"></textarea>
Can I use some sort of a random function on the IDs or something? 我可以在ID上使用某种随机函数吗?
Use Math.random()
method to generate random index. 使用
Math.random()
方法生成随机索引。
// get all textarea eleemnts as an array var $t = $('textarea[id^="text"]').get(); // iterate upto half length for (var i = 0, len = $t.length / 2; i < len; i++) { // generate random index and remove it from collection // where element can be remove using splice method // and which returns an array of removed elements // get the elment from that array and update the value or do whatever you are trying to achieve $t.splice(Math.floor(Math.random() * $t.length), 1)[0].value = i; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <textarea id="text1" name="name1"></textarea> <textarea id="text2" name="name2"></textarea> <textarea id="text3" name="name3"></textarea> <textarea id="text4" name="name4"></textarea> <textarea id="text5" name="name5"></textarea>
Check out How to get n no elements randomly from an array on an efficient way to select n
random elements from an array (this will return unique elements). 查看如何从数组中随机获取n个元素的有效方法,以便从数组中选择
n
随机元素(这将返回唯一元素)。 Adapting this solution, you can do something like this: 调整此解决方案,您可以执行以下操作:
// https://stackoverflow.com/questions/19269545/how-to-get-n-no-elements-randomly-from-an-array function getRandom(arr, n) { var result = new Array(n), len = arr.length, taken = new Array(len); if (n > len) throw new RangeError("getRandom: more elements taken than available"); while (n--) { var x = Math.floor(Math.random() * len); result[n] = arr[x in taken ? taken[x] : x]; taken[x] = --len; } return result; } var textareas = $('textarea'); var randomTextareas = getRandom(textareas, textareas.length / 2); randomTextareas.forEach(function(textArea) { $(textArea).prop('value', 'hello'); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <textarea id="text1" name= "name1"></textarea> <textarea id="text2" name= "name2"></textarea> <textarea id="text3" name= "name3"></textarea> <textarea id="text4" name= "name4"></textarea>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.