简体   繁体   English

将HTML输入值传递给jQuery表单值

[英]Pass HTML input values to jQuery form value

Have a form where I need to pass HTML text input values into a Stripe form. 有一个表单,我需要将HTML文本输入值传递给Stripe表单。

How can I achieve this? 我怎样才能做到这一点?

Snippet of what I have: 我所拥有的片段:

<input type="text" name="trip" id="trip" value="">

JS: ( part of the form ) JS :( 表格的一部分

.append(jQuery('<input>', {
        'name': 'trip',
        'value': getElementById('#trip'),
        'type': 'hidden'
      }))

What I've Tried to grab that value: 我试图抓住这个价值:

  • 'value': $("#trip").val(),
  • 'value': document.querySelector('#trip'),
  • 'value': document.getElementById('#trip')

At this point I'm just googling and guessing. 在这一点上,我只是在谷歌搜索和猜测。 =/ = /


###UPDATE### ###更新###

I was trying to avoid a code dump, but there might be more to the issue. 我试图避免代码转储,但问题可能还有更多。

Here is a more detailed update. 这是一个更详细的更新。
I'm needing to store parts of the form in a Database and keep getting this error. 我需要将表单的一部分存储在数据库中并不断收到此错误。

I've tried most of the solutions in this thread but keep getting this error. 我已经尝试了这个线程中的大部分解决方案,但是一直遇到这个错误。

SQLSTATE[23000]: Integrity constraint violation: 1048 Column gift_trans_fee' cannot be null SQLSTATE [23000]:完整性约束违规:1048列gift_trans_fee'不能为空

This is the reason I need to pass the HTML to the Stripe script. 这就是我需要将HTML传递给Stripe脚本的原因。

Most of the JS Form Fields are for creating a Charge / Customer in Stripe, But I have a few items I need to store in the DB 大多数JS表单字段用于在Stripe中创建Charge / Customer,但是我需要在DB中存储一些项目

HTML FIELDS HTML FIELDS

<input type="checkbox" class="faChkSqr" value="yes" name="gift_trans_fee" id="gift-check" autocomplete="off" checked>

   //DEPENDING ON WHAT'S CHOSEN WILL BRING UP DIFFERENT FIELDS  
<select onchange="tripbehalf(this);" class="custom-select marb-15" id="tripbehalf">
<option selected="true">Optional Info</option>
<option value="trip">This is for a trip.</option>
<option value="behalf">This is on behalf of...</option>
<option value="both">Both Options</option>
</select>

<input type="text" id="trip_participants" name="trip_participants" value="">

<input type="text" id="behalf_of" name="behalf_of" value="">

FULL JS FORM 完整的JS表格

function createHandler(route) {
return StripeCheckout.configure({
key: '{{ config("services.stripe.key") }}',
image: 'https://xxxx-stripe.jpg',
locale: 'auto',
token: function(token) {
  // Use the token to create the charge with a server-side script.
  // You can access the token ID with `token.id`
  var newForm = jQuery('<form>', {
    'action': route,
    'method': 'POST',
  }).append(jQuery('<input>', {
    'name': 'stripe_token',
    'value': token.id,
    'type': 'hidden'
  })).append(jQuery('<input>', {
    'name': 'csrfmiddlewaretoken',
    'value': getCookie('csrftoken'),
    'type': 'hidden'
  })).append(jQuery('<input>', {
    'name': 'amount',
    'value': Math.round(document.querySelector('.total').innerText * 100),
    'type': 'hidden'
  })).append(jQuery('<input>', {
    'name': 'email',
    'value': token.email,
    'type': 'hidden'
  }))
///EXTRA VALUES NEEDED IN DATABASE///
  .append(jQuery('<input>', {
    'name': 'gift_trans_fee',
    'value': getElementById('gift-check'),
    'type': 'hidden'
  })).append(jQuery('<input>', {
    'name': 'trip',
    'value': getElementById('tripbehalf'),
    'type': 'hidden'
  })).append(jQuery('<input>', {
    'name': 'trip_participants',
    'value': getElementById('trip_participants'),
    'type': 'hidden'
  })).append(jQuery('<input>', {
    'name': 'behalf',
    'value': getElementById('tripbehalf'),
    'type': 'hidden'
  })).append(jQuery('<input>', {
    'name': 'behalf_of',
    'value': getElementById('behalf_of'),
    'type': 'hidden'
  }));


  $("body").append(newForm);
  newForm.submit();
}
});
}

PHP Logic: PHP逻辑:

$stripeTransaction->transactions()->create([
    'user_id' => auth()->id(),
    'customer_email' => $charge->receipt_email,
    'amount' => $charge->amount,
    'recurring' => false,
    'gift_trans_fee' => $request->gift_trans_fee,
    'trip' => $request->trip,
    'trip_participants' => $request->trip_participants,
    'behalf' => $request->behalf,
    'behalf_of' => $request->behalf_of,

]);

Use $('#trip').val() 使用$('#trip').val()

.append(jQuery('<input>', {
        'name': 'trip',
        'value': $('#trip').val(),
        'type': 'hidden'
      }))

OR Remove # 或删除#

   .append(jQuery('<input>', {
            'name': 'trip',
            'value': document.getElementById('trip').value,
            'type': 'hidden'
          }))

just doing 只是做

var inputtext = jQuery("#trip").val();

should work just fine, if there are no other fields with the ID trip which there shouldn't be since it's an ID. 应该工作得很好,如果没有其他具有ID旅行的字段,那就不应该存在,因为它是一个ID。

use 采用

jQuery(idorclassorsomething).html(inputtext);

to show your text change idorclassorsomething into an id, class or something else where you want to show the input text. 显示您的文本将idorclassorsomething更改为要显示输入文本的id,类或其他内容。 You might wanna put it in a click on a button or on keyup or keydown. 你可能想点击一个按钮或键盘或keydown。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM