0

クライアント側でフィールドを検証し、フィールドの横にそれぞれの警告を表示しようとしても問題ありません。

<div class="formblock">
    <label class="screen-reader-text">Email</label>
    <input type="text" name="email" {if $smarty.session.email} value={$smarty.session.email} disabled {/if} id="email" class="txt requiredField email" placeholder="Email:"/>
</div>

<div class="formblock">
    <label class="screen-reader-text">Message</label>
    <textarea name="comments" id="commentsText" class="txtarea requiredField"       placeholder="Message:"></textarea>
</div>

たとえば、それらが空であることを確認するには、.each を使用し、すべてのフィールドに対してこれを確認し、そのspan隣に a を追加します。

$('.requiredField').each(function () {
    if ($.trim($(this).val()) == '') {
        var labelText = $(this).prev('label').text();
        $(this).parent().append('<span class="error">You forgot to enter a ' + labelText + '.</span>');
        $(this).addClass('inputError');
        hasError = true;

    }
});

ただし、サーバー側では、私が通常行う方法は、各フィールドの検証を実行し、エラーメッセージを var として追加し ($ERRORTEXTその場合)、最後にエコーを実行し、ajax の成功後にこれを一番上に表示することです形。

$ERRORTEXT .= " <li> Name has to contain more than two characters </li> ";

if ($error)
{
echo $ERRORTEXT; 
}

フィールドごとにこれを行うにはどうすればよいですか (クライアント側で行うことと同様)、それらの隣のスパンに戻すにはどうすればよいですか? echo で 1 つの var を返す代わりに、おそらく json の結果を返してからこれを処理する必要があると思いますか?

4

1 に答える 1

1

あなたのファイル.php

header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');

$validationData = json_decode($_POST['validationData'], true);

//do validation stuff here
//$validationData is an associative array containing all your validation data
//sent from the client's AJAX call

$data = array('error' => 'my errormessage');
//serializing some dummy data to the client
echo json_encode($data);

フォーム データを JSON に変換する方法: jQuery を使用してフォーム データを JavaScript オブジェクトに変換する

someotherfile.htm

$.ajax({
    url: 'yourfile.php',
    data: { validationData: JSON.stringify(yourFormDataObject) },
    success: function(data){
        console.log(data.error); //'my errormessage'
    }
});

サーバーから受信した解析済みオブジェクト にdataは、要素と一致する id プロパティと、その横に表示するメッセージが含まれる場合があります。

于 2013-08-08T13:35:08.130 に答える