调用选择器时函数中的jQuery循环可能吗?

时间:2015-07-21 11:07:11

标签: jquery jquery-selectors

我有一些动态构建的表单和归属ID。 ID看起来像id='send_1'... id="send_2"...

通常它只会发布一个表单,但我不知道将创建多少表单,因此我需要一个通用的jQuery函数来完成工作。目前,下面的代码只适用于一个ID。所以我认为必须可以在选择器中使用whileforeach之类的东西进行循环,如果存在这样的话?

$(document).on("submit", "#paypal", function(e){
    e.preventDefault();

    if ( /\,/.test( $('#send_1').val() ) ) {
        $('#send_1').val($('#send_1').val().replace(/,/g, '.'));
    } else {
        alert('no comma');
    }
    return  false;
});

那么,当我不知道有多少表格存在,甚至不想仅仅改变#send_X时,要编写相同代码的数百倍时,如何才能执行这个foreach _x? / p>

如果有人可以提供帮助,我真的很感激。

3 个答案:

答案 0 :(得分:2)

如果您需要循环解决方案,请参阅下面的代码可能会有帮助

$(document).on("submit", "#paypal", function(e){
    e.preventDefault();

    var i=1;
    $( "li" ).each(function( index ) {                   
        if ( /\,/.test( $('#send_'+i).val() ) ) {
            $('#send_'+i).val($('#send_'+i).val().replace(/,/g, '.'));
        } else {
            alert('no comma');
        }
        i++;
    });
    return  false;
});

或尝试更改

  $('#send_1').val()

  $( "input[id^='send']" ).val();

可能有用我不确定

请参阅this链接

答案 1 :(得分:0)

你可以使用这样的for loop(我已经删除你的if语句来简化):



$(document).on("submit", "#paypal", function(e) {
  e.preventDefault();

  var n = $("form").length; // get the number of forms

  for (var i = 1; i <= n; i++) {
    var form = $("#send_" + i); // gives you the form object        
  }
});
&#13;
&#13;
&#13;

演示here

希望这有帮助。

答案 2 :(得分:0)

您可以为提交按钮添加data-x-id,并在获取ID之后添加:

$(document).on("submit", "#paypal", function(e){
    e.preventDefault();
    var id = $(e.target).attr('data-x-id');
    // for minimal work with dom
    var element = $('#send_'+id);
    var value = element.val();
    if ( /\,/.test( value ) ) {
        element.val(value.replace(/,/g, '.'));
    } else {
        alert('no comma');
    }
    return  false;
});