【问题标题】:Add Hidden Input onCheck添加隐藏输入 onCheck
【发布时间】:2014-12-10 16:02:06
【问题描述】:

谁能告诉我在用户选中复选框时向表单添加隐藏输入字段并在用户取消选中复选框时将其删除的最佳方法?

下面是我发到贝宝的表格。我必须在发布之前建立所有领域。我想在表单中包含一个复选框,单击该复选框将为“宠物费”添加另一个隐藏字段。

            <form id='paypalCheckout' action='https://www.paypal.com/cgi-bin/webscr' method='post' style="margin-bottom: 10px">
            <input type="hidden" name="item_name_1" value="Demo Vacation Home" />
            <input type="hidden" name="item_number_1" value="Demo-Vacation-Home" />
            <input type="hidden" name="amount_1" value="4" />
            <input type="hidden" name="quantity_1" value="1" />

            <input type="hidden" name="item_name_2" value="Refundable Damage Deposit" />
            <input type="hidden" name="item_number_2" value="Refundable-Damage-Deposit" />
            <input type="hidden" name="amount_2" value="3" />
            <input type="hidden" name="quantity_2" value="1" />

            <input type="hidden" name="item_name_3" value="Cleaning Fee" />
            <input type="hidden" name="item_number_3" value="Cleaning-Fee" />
            <input type="hidden" name="amount_3" value="2" />
            <input type="hidden" name="quantity_3" value="1" />

            <input type="hidden" name="item_name_4" value="12% Reservation Fee" />
            <input type="hidden" name="item_number_4" value="12%-Reservation-Fee" />
            <input type="hidden" name="amount_4" value="0.48" />
            <input type="hidden" name="quantity_4" value="1" />

            <input type="hidden" name="item_name_5" value="8% Tax Rate" />
            <input type="hidden" name="item_number_5" value="8%-Tax-Rate" />
            <input type="hidden" name="amount_5" value="0.32" />
            <input type="hidden" name="quantity_5" value="1" />



            <input type='hidden' name='business' value='juliocpreciado@gmail.com' />
            <input type='hidden' name='shopping_url' value='http://www.dreamhomevacationrentals.com/cart/' />
            <input type='hidden' name='lc' value='en_US' />
            <input type='hidden' name='cmd' value='_cart' />
            <input type='hidden' name='charset' value='utf-8'>
            <input type='hidden' name='upload' value='1' />
            <input type='hidden' name='no_shipping' value='2' />
            <input type='hidden' name='currency_code' value='USD' id='currency_code' />
            <input type='hidden' name='custom' value='|||' />
            <input type='hidden' name='notify_url' value='http://www.dreamhomevacationrentals.com/store/ipn/'>
            <input type='hidden' name='return' value='http://www.dreamhomevacationrentals.com/thank-you/' />
            <input id='PayPalCheckoutButton' type='image' src='https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif' value='Checkout With PayPal' />
            </form>

【问题讨论】:

  • 你启用/禁用它怎么样。
  • 您能否发布到目前为止您尝试的内容并解释您遇到的错误
  • 我刚刚编辑了我的帖子以包含其他信息和我的表单代码。

标签: javascript jquery forms function


【解决方案1】:

要使其隐藏,只需将 type="text" 替换为 type="hidden" :)

JQuery:

    <form id="myForm">
        <input onclick="addRemoveHiddenInput('testId', 'testName', 'testValue')" type="checkbox" id="mc" name="paymentMethod" value="Mastercard"><label for="mc"> Mastercard</label>
    </form>

    <script>

        function addRemoveHiddenInput(id, name, value) {

            if ( $('#' + id).length > 0 ) {

                $('#' + id).remove();  
            } else {

                $('#myForm').append('<input type="text" name="' + name + '" value="' + value + '" id="' + id + '" />');   
            }

        }

    </script>

小提琴:http://jsfiddle.net/9w5g3swr/

纯 Javascript:

<form id="myForm">
    <input onclick="addRemoveHiddenInput('testId', 'testName', 'testValue')" type="checkbox" id="mc" name="paymentMethod" value="Mastercard"><label for="mc">Mastercard</label>
</form>

<script>

    function addRemoveHiddenInput(id, name, value) {

        var hiddenInput = document.getElementById(id);

        if ( hiddenInput != null ) {

            hiddenInput.parentNode.removeChild(hiddenInput);
        } else {

            document.getElementById('myForm').innerHTML = document.getElementById('myForm').innerHTML + '<input type="text" name="' + name + '" value="' + value + '" id="' + id + '" />';
        }

    }

</script>

小提琴:http://jsfiddle.net/uu1ftnhg/

【讨论】:

  • 感谢 user3866023 和以上所有用户的输入。我将实现此代码并希望这是我的解决方案:)
  • 嘿伙计,我添加了你的代码,但由于某种原因它不起作用。
  • Mhhh 它的工作对我来说很奇怪......但又分叉了。你可以试试这个jsfiddle.net/9w5g3swr 在 Chrome、Firefox 和 Opera 中测试过。你确定你已经包含了 JQuery 库吗?
  • 对不起,我认为我编辑了我的最后一条评论以删除关于它在 jsfiddle 中不起作用的部分。但是,它仍然无法在我实现它的 wordpress 页面中工作。请看一下...dreamhomevacationrentals.com/hotels/demo-vacation-home 点击“可用性”,然后点击“立即预订”。填写一些虚拟数据,然后您将在提交表单后在页面底部附近看到您的万事达卡复选框。很抱歉很痛苦。
  • 是的,Jquery 似乎无法正常工作...我可以用纯 Javascript 重写它。
【解决方案2】:

您可以在复选框中添加:onChange="if(htis.checked)$("#yourinput").style.display = 'none';else $("#yourinput").style.display = 'block';"

编辑:或类似的东西,但你明白了。

【讨论】:

  • 好的,但该字段仍将存在于表单中。我认为我需要在未选中时从表单中实际删除该字段,并在选中复选框时将其添加到表单中。您发布的代码仅显示/隐藏该字段,无论如何这是一个隐藏的输入。
  • 改用 .remov() 和 .append("")
【解决方案3】:

HTML:

<label><input type = "checkbox" id ="myCheckBox"/> Check me!</label>
<span id="hiddenWrapper">
</span>

这是所需的 jQuery 代码:

 $('#myCheckBox').click(function(){
        var isChecked = $(this).prop('checked');
        if(true === isChecked){
            $('#hiddenWrapper').html('<input type="hidden" value="myVal" />');

        }
        else
        {
            $('#hiddenWrapper').empty();
        }
    });

看看这个http://jsfiddle.net/o7nay5xz/

【讨论】:

    【解决方案4】:
    $("#randomCheckbox").change(function(){
         if($(this).is(":checked"))
             $("#paypalCheckout").append($("<input type='hidden' id='randomId'>"));
         else
             $("#paypalCheckout #randomId").remove();
    })
    

    【讨论】:

      【解决方案5】:

      触发您的复选框以添加或删除隐藏元素。这是一个 jQuery 示例:

      $(function () {
          $("#chkbox").on("click", function () {
            var $this = $(this),
                $input = $('<input type="hidden" name="hiddenField" />'); 
      
              // Insert the hidden field after the checkbox if checked
              if ($this.prop("checked")) {
                  $this.after($input);
      
              // Remove the hidden field if unchecked
              } else {
                  $this.next().remove();
              }
          });
      });
      

      JSFiddle:http://jsfiddle.net/qy1ez1L8/1/

      【讨论】:

      • 我认为您的代码可以解决问题。我有 3 个其他隐藏字段,我必须以相同的方式添加/删除。有没有办法轻松修改您的函数,以便它可以接收 4 个不同的参数。基本上,单击复选框将添加/删除 4 个隐藏的输入。每个都有不同的值。这对于代表贝宝帖子中的一项的 4 个输入是必要的。
      • @AlexWilliams,您的复选框是否与需要隐藏的输入字段直接相关?换句话说,当单击复选框时,我如何知道要添加/删除哪 4 个字段?查看您的代码示例后,您最好的选择是禁用隐藏字段,以便它们不会被发布。
      • 好的,所以这可能有效。我不知道禁用该字段会阻止它被包含在帖子中。感谢您提供的信息。
      猜你喜欢
      • 2018-03-08
      • 1970-01-01
      • 2021-04-04
      • 2011-12-06
      • 2018-07-02
      • 2012-12-21
      • 2013-08-18
      • 2021-10-05
      • 1970-01-01
      相关资源
      最近更新 更多