2014-10-23 3 views
0

Попытка настроить кнопку Paypal для повторных пожертвований на завершение в определенную дату (декабрь 2017). Мы хотим, чтобы длина подписки была динамичной (у кого-то, кто подписывается через 2 месяца, не будет столько повторений, как у тех, кто подписывает сейчас bc меньше времени до конца 2017 года). Я новичок в программировании, но думаю, что я установил код js, чтобы определить оставшиеся месяцы. Мой вопрос заключается в том, как ввести эту переменную (numberOfMonths) в тег ввода html. мне нужно как-то поместить переменную в значение для ввода имени srt в строке:Добавление переменной js в тег ввода html

<input type="hidden" name="srt" value="MyVariable"> 

Прямо сейчас полный код:

<script> 
var date1=new Date(); // blank uses current date 
var date2=new Date(2017,11,31); //months 0 based in js so actually dec 
var year1=date1.getFullYear(); 
var year2=date2.getFullYear(); 
var month1=date1.getMonth(); 
var month2=date2.getMonth(); 
if(month1===0){ //Have to take into account 
    month1++; 
    month2++; 
} 
var numberOfMonths; 
numberOfMonths=(year2-year1)*12+(month2-(month1-1)); 
return numberOfMonths; 

</script> 


<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> 
<input type="hidden" name="cmd" value="_xclick-subscriptions"> 
<!--You will need to set the email to your PayPal email or Secure Merchant ID --> 
<input type="hidden" name="business" value="TEZ9LZK9B36X8"> 
<input type="hidden" name="lc" value="US"> 
<input type="hidden" name="item_name" value="Monthly Donation"> 
<input type="hidden" name="item_number" value="1234"> 
<input type="hidden" name="no_note" value="1"> 
<input type="hidden" name="no_shipping" value="2"> 
<input type="hidden" name="src" value="1"> 
<input type="hidden" name="p3" value="1"> 
<input type="hidden" name="currency_code" value="USD"> 
<input type="hidden" name="bn" value="PP-SubscriptionsBF:btn_subscribeCC_LG.gif:NonHosted"> 
<input type="hidden" name="srt" value="35"> 
<input type="hidden" name="t3" value="M"> 
<table> 
<tr><td>Enter Your Donation Amount</td></tr> 
<tr><td>$ <input type="text" name="a3" maxlength="60"></td></tr> 
</table> 
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0"   
name="submit" alt="PayPal - The safer, easier way to 
pay online!"> 
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"> 
</form> 

ответ

0

Вы должны добавить атрибут ID:

<input type="hidden" name="srt" value="MyVariable" id="numberOfMonths" /> 

А потом:

<script> 
document.getElementById("numberOfMonths").value = (function(){ 
    var date1 = new Date(), 
     month1 = date1.getMonth(), 
     year1 = date1.getFullYear(), 
     date2 = new Date(2017,11,31), 
     month2 = date2.getMonth(), 
     year2 = date2.getFullYear(); 

    if(month1===0){ 
     month1++; 
     month2++; 
    } 
    return (year2-year1)*12+(month2-(month1-1)); 
}()); 
</script> 
+0

Удивительный, спасибо, что сработал! .. Это был мой первый маленький проект кодирования. Довольно интересный материал. – mmoreno

3

Прежде всего, у вас есть оператор возврата вне функции в вашем скрипте. Во-вторых, если вы используете javascript vanilla (без jquery), вы можете указать идентификатор input и использовать document.getElementById, чтобы выбрать input и изменить его значение. input может быть:

<input type="hidden" name="srt" id="srtVal" value="MyVariable"> 

И JavaScript:

function calcuateMonthsRemaining(){ 
    var date1=new Date(); // blank uses current date 
    var date2=new Date(2017,11,31); //months 0 based in js so actually dec 
    var year1=date1.getFullYear(); 
    var year2=date2.getFullYear(); 
    var month1=date1.getMonth(); 
    var month2=date2.getMonth(); 
    if(month1===0){ //Have to take into account 
     month1++; 
     month2++; 
    } 
    return (year2-year1)*12+(month2-(month1-1)); 
} 
document.getElementById('srtVal').value = calculateMonthsRemaining(); 

Обратите внимание, что вы должны переместить JavaScript в вашем script тег ниже формы HTML, так что загружен ваш input элемент, прежде чем пытаться изменить его значение.

+0

Спасибо за вход. По какой-то причине я все еще не мог заставить его работать с этим методом. Помните, что я новичок, поэтому я все еще пытаюсь проанализировать, что вы сделали, и почему это не работает для меня. Код alfonsomartinde, похоже, сделал трюк. – mmoreno

Смежные вопросы