3

Paypalボタンジェネレーターを使用して今すぐ支払うボタンを作成しました。

ボタンには 2 つのフィールドがあり、今すぐ支払いを押します。

ただし、これらのフィールドを空のままにしても、支払いは可能です

これらのフィールドを「必須」にしたいのですが、ユーザーがこれらのフィールドに入力しなかった場合、支払いはできません。どのように?

ボタンはペイパルでホストされていませんが、ボタン保護はONです。ボタンを暗号化したい。

編集

JavaScript フォーム検証を試しましたが、うまくいきませんでした。

ここにスクリプトがあります

<form
action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<table>
<tr><td><input type="hidden" name="on0" value="first form">form 1</td></tr><tr><td><input type="text" name="os0" maxlength="200"></td></tr>
<tr><td><input type="hidden" name="on1" value="2nd form">2nd form</td></tr><tr><td><input type="text" name="os1" maxlength="200"></td></tr>
</table>
<input type="hidden" name="encrypted" value=" encryption here ">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

これらのフィールドを必須にする方法はありますか? 私は3つのstackoverflowアカウントと受け入れられた回答を持っているので、3つの賛成票を差し上げます-それは私ができる最低限のことです:)

PS

フォームの検証を機能させることができなかったので、フォームが入力されていない限り送信ボタンを非表示にしようとしましたが、これもうまくいきませんでした。

更新 - @Last Rose Studios

私は多くの検証方法を試しましたが、最終的には友人の連絡フォームの検証を使用しました笑

検証.js

function has_id(id){try{var tmp=document.getElementById(id).value;}catch(e){return false;}
return true;}
function has_name(nm){try{var tmp=cfrm.nm.type;}catch(e){return false;}
return true;}
function $$(id){if(!has_id(id)&&!has_name(id)){alert("Field "+id+" does not exist!\n Form validation configuration error.");return false;}
if(has_id(id)){return document.getElementById(id).value;}else{return;}}
function $val(id){return document.getElementById(id);}
function trim(id){$val(id).value=$val(id).value.replace(/^\s+/,'').replace(/\s+$/,'');}
var required={field:[],add:function(name,type,mess){this.field[this.field.length]=[name,type,mess];},out:function(){return this.field;},clear:function(){this.field=[];}};var validate={check:function(cform){var error_message='Please fix the following errors:\n\n';var mess_part='';var to_focus='';var tmp=true;for(var i=0;i<required.field.length;i++){if(this.checkit(required.field[i][0],required.field[i][1],cform)){}else{error_message=error_message+required.field[i][2]+' must be supplied\n';if(has_id(required.field[i][0])&&to_focus.length===0){to_focus=required.field[i][0];}
tmp=false;}}
if(!tmp){alert(error_message);}
if(to_focus.length>0){document.getElementById(to_focus).focus();}
return tmp;},checkit:function(cvalue,ctype,cform){if(ctype=="NOT_EMPTY"){if(this.trim($$(cvalue)).length<1){return false;}else{return true;}}else if(ctype=="EMAIL"){exp=/^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;if($$(cvalue).match(exp)==null){return false;}else{return true;}}},trim:function(s){if(s.length>0){return s.replace(/^\s+/,'').replace(/\s+$/,'');}else{return s;}}};

paypal.html

<script src="validation.js"></script>


    <script>
    required.add('os0','NOT_EMPTY','1st form');

    required.add('os1','NOT_EMPTY','2nd form')

    </script>


<form action="https://www.paypal.com/cgi-bin/webscr" method="post" onsubmit="return validate.check(this)">
<input type="hidden" name="cmd" value="_s-xclick">
<table>
<tr><td><input type="hidden" name="on0" value="1st form">1st form<span class="required_star"> * </span></td></tr><tr><td><input type="text" name="os0" maxlength="200" id="os0" class="required"></td></tr>
<tr><td><input type="hidden" name="on1" value="2nd form">2nd form<span class="required_star"> * </span></td></tr><tr><td><input type="text" id="os1" name="os1" maxlength="200" class="required"></td></tr>
</table>
<input type="hidden" name="encrypted" value=" encryption here
">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

私は JavaScript を使用しており、あなたの回答を読みましたが、現在は機能しているため、変更するつもりはありません

私はまだ2つの小さな質問があります

1-ペイパルページから説明ボックスを削除することは可能ですか?これを見てくださいここに画像の説明を入力

2- 支払いが完了した後、PayPal がサンキュー ページにリダイレクトされません。多くのボタンを作成しましたが、リダイレクトされません (キャンセル ページがありません)。

4

2 に答える 2

7

html5 の入力属性 'required' を使用すると、一部のブラウザーは処理されますが、他のブラウザーではフォームを検証するために JavaScript を使用する必要があります。

簡単な例を示してもよければ、jQuery を使用します。

$('form').submit(function(e){
    flag = false;
    $('[name="os0"], [name="os1"]').css('background','').each(function(){
        el=$(this);
        if(el.val().length == 0){
           flag = true;
           el.css('background','red');
        }
    });
    if(flag){
     return false;
    }
});

これにより、両方のフィールドに入力しない限り、フォームが送信されなくなります。入力の背景を赤にすることで、ユーザーへのフィードバックも追加しました (オプション)。

もちろん、これは最新のブラウザーまたは javascript が有効になっている古いブラウザーでのみ機能しますが、通過する部分はまだわずかです。この場合、サーバー上の中間ページに投稿するというロバートの提案は良い考えかもしれません。

于 2011-11-26T14:24:34.153 に答える
3

POSTはPayPal(https://www.paypal.com/cgi-bin/webscr)に直接送信されるため、ボタンコードを変更せずに、クライアント側のソリューション(前述のように)が必要になります。
または、POSTをサーバーの中間ページに送信し、そこにPayPalから転送して、サーバー側のチェックも含めることができます(たとえば、JavaScriptが無効になっている場合など、フィールドが絶対に必要な場合のみ)。 )。

于 2011-11-20T21:53:13.300 に答える