【问题标题】:javascript iterate through form elements to find input value [closed]javascript遍历表单元素以查找输入值[关闭]
【发布时间】:2015-11-26 04:21:49
【问题描述】:

我一直在寻找,还没有真正找到解决方案,所以我问。

我有一个购物车,需要确认正在添加的商品已经存在,并询问用户是否还想添加。

我尝试过的代码确实找到并提出问题,但它仍然提交并添加所选项目。

// check if item exists
$(".add_to_order").on("click", function() {
    var current_id = $(this).data("id");
    return $(".order_list input").each(function() {
        if ( current_id == $(this).val() ) {
            return confirm('Item exists, still want to add?');
        }
    });
});

PHP (CodeIgniter) / HTML (Bootstrap)

<?php if ($products) {
    foreach($products as $product){ ?>
        <form action="/orders/add_to_order" method="get">
            <button class="add_to_order" type="submit" data-id="<?php echo $product->id; ?>">Add to Cart</button>
        </form>
<?php } } ?>

购物车

<form action="/orders/send" method="post" id="order">
    <?php foreach($order_products as $order_product) { ?>
        <input class="added_product" type="hidden" value="<?php echo $order_product->product_id; ?>" />
    <?php } ?>
    <button type="submit">Order</button>
</form>

我选择隐藏产品 ID。

谢谢。

【问题讨论】:

  • 能否包含html?并创建sn-p?
  • 确认有效吗?您是否收到错误消息?
  • 去掉return $(".order_list input").each(function()中的return语句并尝试
  • @KanishkaPanamaldeniya 尝试过,仍然提交
  • @Jonathan 添加了额外的代码。在下面尝试了您的解决方案,仍然提交表单。

标签: javascript jquery forms loops input


【解决方案1】:

问题

AFAIK,jQuery 的 .each() 函数没有返回值。

当你在做的时候:

return $(".order_list input").each(function() {
    if ( current_id == $(this).val() ) {
        return confirm('Item exists, still want to add?');
    }
});

内部返回只是返回到.each(),但它的值不会转到return


解决方案

我认为解决这个问题的最简单方法是设置一个变量 confirmed 并像这样使用它:

var confirmed = true;
return $(".order_list input").each(function() {
    if ( current_id == $(this).val() ) {
        confirmed = (!confirmed) ? false : confirm('Item exists, still want to add?');
    }
});
return confirmed;

这将以 confirmed 为 true 开始,如果按下单个 confirm() 为 false(如果用户取消),则 confirmed 将保持为 false。

【讨论】:

  • 我相信内部回报只是一个确认,应该还有一个条件。如果确认就这样做如果不这样做..只是我的想法..没有看到所有相关代码这很难
  • @guradio 是的,额外的代码会有所帮助。但是,如果您查看我的更新,我认为这会更好地确认
【解决方案2】:

找到解决方案...

$(".add_to_order").on("click", function(e) {
    var current_id = $(this).data("id");
    $(".order_list input").each(function() {
        if ( current_id == $(this).val() ) {
            if (confirm('Item exists, still want to add?') == false)
                e.preventDefault();
        }
    });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 2016-03-06
    • 2013-11-27
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多