【问题标题】:display update and cancel button after clicking edit button单击编辑按钮后显示更新和取消按钮
【发布时间】:2015-10-29 13:15:34
【问题描述】:

我们有市场网站,每个卖家/供应商都有自己的帐户。他们可以看到产品列表。 sku ,数量在他们的帐户中。

现在显示如下:图片 1 =http://prnt.sc/8wm25g

如果我点击取消按钮,则显示如下:http://prnt.sc/8wm2fv

我需要的是:

a)如果我们点击编辑按钮,那么只有“更新”和“取消”按钮应该可见,而“编辑”按钮应该隐藏。

b)稍后如果我们点击“取消”按钮,“更新和取消”按钮应该隐藏,“编辑”按钮应该可见。

<?php echo (int) Mage::getModel('cataloginventory/stock_item')->loadByProduct($products)->getQty(); ?>
      <input type = "text" id = "qty_<?php echo $products->getId(); ?>" name = "qty" value = "<?php echo (int) Mage::getModel('cataloginventory/stock_item')->loadByProduct($products)->getQty(); ?>" style = "display:none"/>



    <span class="label wk_action" id="edit_link_<?php echo $products->getId(); ?>">
            <img onclick="showField('<?php echo $products->getId(); ?>'); return false;" src="<?php echo $this->getSkinUrl('marketplace/images/icon-edit.png'); ?>"/>
        </span>  

        <br/>
        <button id="update_button_<?php echo $products->getId(); ?>" class="button wk_mp_btn1" onclick="updateField('<?php echo $products->getId(); ?>'); return false;" >
            <span><span style="font-size:12px;"><?php echo $helper->__('Update') ?></span></span>
        </button>

        <button id="reset_button_<?php echo $products->getId(); ?>" type="reset" class="cancel" onclick="hideReset('<?php echo $products->getId(); ?>'); return false;">
            <span><span><?php echo $helper->__('Cancel') ?></span></span>
        </button>

    <script type = "text/javascript" >

            var $wk_jq = jQuery.noConflict();

            function hideReset(product_id) {
                var editLink = "#edit_link_"+ product_id;
                var updateButton = "#update_button_"+ product_id;
                var resetButton = "#reset_button"+ product_id;

                $wk_jq(editLink).show();
                $wk_jq(updateButton).hide();
                $wk_jq(resetButton).hide();
            }
             function showField(product_id)
            {
                var qtyId = '#qty_'+ product_id;

                var editLink = "#edit_link_"+ product_id;
                var updateButton = "#update_button_"+ product_id;
                var resetButton = "#reset_button"+ product_id;

                $wk_jq(qtyId).toggle()

                $wk_jq(editLink).hide();
                $wk_jq(updateButton).show();
                $wk_jq(resetButton).show();

                $qty = $wk_jq(qtyId).val();


            }
            function updateField(product_id)
            {
                var qtyId = '#qty_'+ product_id;

                var editLink = "#edit_link_"+ product_id;
                var updateButton = "#update_button_"+ product_id;
                var resetButton = "#reset_button"+ product_id;
            var url ='<?php echo Mage::getUrl('marketplace/marketplaceaccount/updateField/')?>';

                $wk_jq(qtyId).toggle()

                $wk_jq(editLink).hide();
                $wk_jq(updateButton).show();
                $wk_jq(resetButton).show();

                $qty = $wk_jq(qtyId).val();

                new Ajax.Request(url, {
                    method: 'post',
                    parameters: {id: product_id, qty: $qty},
            onComplete: function (transport) {


                    alert(transport.responseText);
            $wk_jq(qtyId).setValue($qty);

                }
                });
            }

【问题讨论】:

  • 据我所见,它应该可以工作。让我看看 Fiddle 并返回。
  • 您并没有真正说出问题所在,但我看到您的 #reset_button 选择器在 id 之前缺少下划线——例如,在标记中,您使用 reset_button_10 ,但您的代码会尝试使用reset_button10,看到缺少的下划线了吗?除此之外,不清楚你在问什么。我认为某些事情没有按照您希望的方式工作,但您没有告诉我们什么不工作,或者您如何尝试解决它。投票结束。如果您可以编辑以改进问题,我将撤回我的投票。
  • 生成的代码是什么?我在这里工作得很好。显示实际生成的页面是什么。另外,你的控制台里有什么?
  • @frostymarvelous 这是完整的文件 = pastebin.com/VVg0krmX 以上代码是该文件的一部分
  • @ChrisBaker 我更新了问题

标签: javascript php jquery magento


【解决方案1】:

所以看了之后,我注意到了一些问题。 我没有完全按照您的意愿进行操作,而是进行了一些更改。

  1. 更新按钮不应在开始时显示,因为没有要更新的内容。
  2. 只有在编辑时才会显示取消。
  3. 在 ajax 请求期间应禁用更新按钮。

在这里找到小提琴https://jsfiddle.net/g1v9x1bt/ 以及下面的完整代码。看看能不能帮到你。

So after looking at it, there are a few issues I noted.

我没有完全按照你的意愿去做,而是做了一些改变。

  1. 更新按钮不应在开始时显示,因为没有要更新的内容。
  2. 只有在编辑时才会显示取消。
  3. 在 ajax 请求期间应禁用更新按钮。

在这里找到小提琴https://jsfiddle.net/g1v9x1bt/ 以及下面的完整代码。看看能不能帮到你。

    <span id="qty_span_<?php echo $products->getId(); ?>"><?php echo (int) Mage::getModel('cataloginventory/stock_item')->loadByProduct($products)->getQty(); ?></span>
      <input type="text" id="qty_<?php echo $products->getId(); ?>" name="qty" value="<?php echo (int) Mage::getModel('cataloginventory/stock_item')->loadByProduct($products)->getQty(); ?>" style="display:none"/>


    <span class="label wk_action" id="edit_link_<?php echo $products->getId(); ?>">
            <img width="25" onclick="showField('<?php echo $products->getId(); ?>')" src="<?php echo $this->getSkinUrl('marketplace/images/icon-edit.png'); ?>" title="<?php echo $helper->__('Edit') ?>" alt="<?php echo $helper->__('Edit') ?>"/>
        </span>  

        <br/>
        <button id="update_button_<?php echo $products->getId(); ?>" class="button wk_mp_btn1" onclick="updateField('<?php echo $products->getId(); ?>');" style="display:none" >
            <span><span style="font-size:12px;"><?php echo $helper->__('Update') ?></span></span>
        </button>

        <button id="reset_button_<?php echo $products->getId(); ?>" type="reset" class="cancel" onclick="hideReset('<?php echo $products->getId(); ?>');" style="display:none">
            <span><span><?php echo $helper->__('Cancel') ?></span></span>
        </button>




    <script>
        var $wk_jq=jQuery.noConflict();

        function hideReset(product_id) {
            var qtyId='#qty_'+ product_id;

            var editLink="#edit_link_"+ product_id;
            var updateButton="#update_button_"+ product_id;
            var resetButton="#reset_button_"+ product_id;

            $wk_jq(qtyId).hide();

            $wk_jq(editLink).show();
            $wk_jq(updateButton).hide();
            $wk_jq(resetButton).hide();
        }

        function showField(product_id)
        {
            var qtyId='#qty_'+ product_id;

            var editLink="#edit_link_"+ product_id;
            var updateButton="#update_button_"+ product_id;
            var resetButton="#reset_button_"+ product_id;

            $wk_jq(qtyId).show();

            $wk_jq(editLink).hide();
            $wk_jq(updateButton).show();
            $wk_jq(updateButton).prop('disabled', false);//just in case
            $wk_jq(resetButton).show();

            return false;
        }

        function updateField(product_id)
        {
            var qtyId='#qty_'+ product_id;

            var qty = $wk_jq(qtyId).val();

            var $updateButton = $wk_jq("#update_button_"+ product_id);


            //disable it after start
            $updateButton.prop('disabled', true);

            new Ajax.Request(url, {
                method: 'post',
                parameters: {id: product_id, qty: qty},
                onComplete: function (transport) {
                    $wk_jq('#qty_span_' + product_id).text(qty);
                    hideReset(product_id);
                    $updateButton.prop('disabled', false);
                    alert(transport.responseText);

                    $wk_jq(qtyId).setValue($qty);
                }
            });

            return false;
        }
    </script>

【讨论】:

  • 我更新了您的代码,请在此处查看:2.kidsdial.com/index.php/marketplace/marketplaceaccount/… 它仅适用于第一个产品
  • 首先显示实际数量 [200] 我们现在正在编辑的不是实际数量。它没有保存在数据库中,请检查....
  • 好的,它不能完全替代您的代码。它是您遵循并应用于您的代码的指南。如果您仔细观察,我删除了 PHP 代码。而且ajax代码是无效的ajax只是一个模拟。
  • 对不起,我错过了代码,一切正常,但现在它没有保存在数据库中,就是这样,请帮忙.....
  • 当我们编辑时,它显示在卖家账户中,但在数据库中它没有保存......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-03
  • 2013-08-10
  • 1970-01-01
相关资源
最近更新 更多