5

Web サイトで作業していて、問題が発生しました。選択した値を事前設定または再入力するために、Codeigniter では set_radio を使用して問題を解決できます。

<td>Do You Have a PayPal Account <span class="error">*</span> : </td>
<td colspan="2" align="left" valign="top"><label>   
  <!-- used for validation -->
    <input type="hidden" id="temp_mid" value="" />
    <input name="mail_account" type="radio" id="p_same" value="same" onclick="dohide_show(this.value);" <?php echo set_radio('mail_account', 'same'); ?>/> Yes(same as email address as above.)<br/>
    <input name="mail_account" type="radio" id="p_diff" value="diff" onclick="dohide_show(this.value);" <?php echo set_radio('mail_account', 'diff'); ?>/> Yes(different than above.)<br/>
    <input name="mail_account" type="radio" id="p_checkInMail" value="checkInMail" onclick="dohide_show(this.value);" <?php echo set_radio('mail_account', 'checkInMail'); ?>/> No(I would prefer to receive a check in the mail.)                  
     <?php echo form_error('mail_account'); ?>           

 </td>

フォームの別の部分にエラーがある場合、前のラジオ ボタンが選択されているため、これは検証後に問題なく機能します。しかし、ユーザーがエラーを修正した後にページを再送信しようとすると、ラジオの選択で検証が失敗し、以前に選択したオプションでラジオ ボタンが視覚的に選択されていても、ラジオ ボタンをもう一度クリックするように求められます。そのため、フォームを再送信する前に、もう一度ラジオ ボタンを選択する必要があります。呼び出されたアラートは次のとおりです。

function validate_playpal()
        {   
            var temp=$('#temp_mid').val();
            if(temp=="")
            {
                alert('Please select the PayPal account option.');                  
                $('#p_same').focus();
                return false;
            }
            if(document.getElementById('p_diff').checked== true && document.getElementById('paypal_emailid').value=='')
            {
                alert('Please provide your PayPal email address.');
                document.getElementById('paypal_emailid').focus();
                return false;
            }

            if(document.getElementById('paypal_emailid').value!='')
            {
                if(!email_format(document.getElementById('paypal_emailid').value)){
                    alert('Please enter valid email address.');
                    document.getElementById('paypal_emailid').value="";
                    document.getElementById('paypal_emailid').focus();
                    return false;               
                }
            }
            return true;
        }

フォームが正しく再作成されているにもかかわらず、これが機能しない理由を誰かが知っていますか? ありがとう。

編集:

Mid_temp が何をするかを尋ねたすべての人にとって、ボタンを選択する必要がない場合、ボタンを非表示にするだけのように思えます。私が持っているコードでは、これらは言及されている唯一の場所です:

    $('#bx').hide();
if(document.getElementById('p_diff').checked==true){    
    $('#bx').show();
}

function dohide_show(val){
    if(val=='diff')
    {       
        $('#bx').show();
        $('#paypal_emailid').val('');
        document.getElementById('p_diff').checked=true;
        $('#temp_mid').val('clicked');
    }
    else if(val=='same')
    {       
        $('#bx').hide();
        $('#paypal_emailid').val($('#email_id').val());
        $('#temp_mid').val('clicked');  
    }
    else
    {
        $('#bx').hide();
        $('#paypal_emailid').val($('#email_id').val());
        $('#temp_mid').val('clicked');
    }

}

そしてここでは、完全に別のファイルで:

function hide_box()
            {
                $('#bx').hide();
                $('#paypal_emailid').val('');
                $('#temp_mid').val('clicked');
            }
            function show_box()
            {
                $('#bx').show();
                $('#paypal_emailid').focus();
                $('#temp_mid').val('clicked');
            }

また、Paypal Email ID は、ユーザーが Paypal アカウントを持っている場合に入力した Paypal メールアドレスをチェックしているだけです。みんな助けてくれてありがとう。

4

3 に答える 3

1

id="temp_mid"フィールドに再入力していないようですが、ここで確認してくださいif(temp=="") 。多分あなたもそれを再設定する必要がありますか?

于 2012-10-21T16:41:28.633 に答える
0

@Mikhailが提案したように、temp_mid非表示フィールドの値を再入力しないでください。再入力の必要をなくすために、そのフィールドを破棄し、次の方法でjQueryを使用してラジオボタンのオプションが選択されているかどうかを検出できます。

function validate_playpal()
{   
    if($('[name="mail_account"]:checked').size() > 0)
    {
        alert('Please select the PayPal account option.');                  
        $('#p_same').focus();
        return false;
    }
    ...
    return true;
}

if3行目のステートメントに注意してください$('[name="mail_account"]:checked').size() > 0

それが役に立てば幸い-

于 2012-10-26T20:51:33.087 に答える
0

「PayPal アカウント オプションを選択してください。」というエラー メッセージは何ですか?

これは必ず失敗します

<input type="hidden" id="temp_mid" value="" />

......
var temp=$('#temp_mid').val();
if(temp=="")
{
    alert('Please select the PayPal account option.');                  
    $('#p_same').focus();
    return false;
}
于 2012-10-21T21:15:42.420 に答える