Javascript 在动态创建的文本框上调用jQuery(jQuery Mobile)
我有以下jQuery函数,可以动态创建5个可折叠文件(在可折叠文件中): 我一直在尝试让这个函数根据用户选择的Javascript 在动态创建的文本框上调用jQuery(jQuery Mobile),javascript,jquery,html,jquery-mobile,Javascript,Jquery,Html,Jquery Mobile,我有以下jQuery函数,可以动态创建5个可折叠文件(在可折叠文件中): 我一直在尝试让这个函数根据用户选择的textbox接受任何id 我制作的这个程序只显示了5个可折叠的,但我的原始程序需要用户输入,药物的数量可能会有所不同。请注意,第一个数量文本框不允许任何字母。我希望所有的Quantity文本框的行为都相同 我还尝试了另一个函数,添加了var qtyID=$(this.attr(I)所以删除所有不是数字的输入,但它似乎不起作用 $(document).ready(function ()
textbox
接受任何id
我制作的这个程序只显示了5个可折叠的,但我的原始程序需要用户输入,药物的数量可能会有所不同。请注意,第一个数量文本框不允许任何字母。我希望所有的Quantity
文本框的行为都相同
我还尝试了另一个函数,添加了var qtyID=$(this.attr(I)代码>所以删除所有不是数字的输入,但它似乎不起作用
$(document).ready(function () {
var qtyID = $(this).attr(i);
$("#number" + qtyID).keypress(function (e) {
var value = $(this).val();
value = value.replace(/[^0-9]+/g, '');
$(this).val(value);
});
});
我也尝试过将整个函数放在主函数中,但没有任何帮助。
基本上,我想要的就是能够从那些文本框中获取动态创建的id
,这样我就可以对它们调用一个小函数,但是没有我在网上看到的无数关于如何实现这一点的例子,我无法让它工作
如有任何建议,我们将不胜感激。活动代表团:
$('#medListDiv').on('keypress', '#number0', function(ev) {
您的处理程序在运行时被绑定,并且不知道这些动态创建的元素。绑定到运行时确实存在的元素。您的问题是仅在第一次数量输入时调用该函数。不是按ID选择输入,而是按类选择输入
在每个输入中添加一个编号类
var text = '<div data-role="collapsible" data-collapsed="true" data-iconpos="right">' + '<h2>' + value + '</h2>' + '<input id="number' + i.toString() + '" class="number" type="text" placeholder="Quantity" />' + '<textarea cols="40" rows="4" placeholder="Type any directions written on your prescription for the above medicine." ></textarea></div>';
试试这个:
JQuery:
$(文档).ready(函数(){
$('body').on('keydown',.number',函数(事件){
如果(event.keyCode==46 | | | event.keyCode==8 | | event.keyCode==9 | | event.keyCode==27 | | event.keyCode==13||
//允许:Ctrl+A
(event.keyCode==65&&event.ctrlKey==true)||
//允许:起始、结束、左、右
(event.keyCode>=35&&event.keyCode不要在JQM中使用.ready()
。感谢您提供此解决方案,是的,我知道我只调用了第一个数量输入,这样做是为了显示我想要的一切。此解决方案确实解决了此特定问题。谢谢!)-另外,如果不太需要问的话,是否有原因说明上述功能无法在移动仿真器上运行?(具体来说是Opera)。它在浏览器上运行正常。
$('#medListDiv').on('keypress', '#number0', function(ev) {
var text = '<div data-role="collapsible" data-collapsed="true" data-iconpos="right">' + '<h2>' + value + '</h2>' + '<input id="number' + i.toString() + '" class="number" type="text" placeholder="Quantity" />' + '<textarea cols="40" rows="4" placeholder="Type any directions written on your prescription for the above medicine." ></textarea></div>';
$(".number").on('keypress', function(ev) {
var keyCode = window.event ? ev.keyCode : ev.which;
//codes for 0-9
if (keyCode < 48 || keyCode > 57) {
//codes for backspace, delete, enter
if (keyCode != 0 && keyCode != 8 && keyCode != 13 && !ev.ctrlKey) {
ev.preventDefault();
}
}
});
$(document).ready(function () {
$('body').on('keydown', ".number", function (event) {
if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
// Allow: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Allow: home, end, left, right
(event.keyCode >= 35 && event.keyCode <= 39)) {
// let it happen, don't do anything
return;
} else {
// Ensure that it is a number and stop the keypress
if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) {
event.preventDefault();
}
}
});
});
<td><input type=text id=Qty_' + ID + ' class="number"/></td>'