Javascript 在动态创建的文本框上调用jQuery(jQuery Mobile)

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 ()

我有以下jQuery函数,可以动态创建5个可折叠文件(在可折叠文件中):

我一直在尝试让这个函数根据用户选择的
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>'