1

ユーザーが を入力できる入力フィールドがありますINPUTVALUE。これINPUTVALUEは正規表現に対して正しいかどうかがチェックされ、php ファイルに送信され、それを使用して計算が行われ、いずれかの 0 が返されます (無効であることを意味しINPUTVALUEます) 。またはRETURNVALUE。これRETURNVALUEは、 id を持つ Web サイトの要素に表示される必要があります#VALUEINFO。また、これがRETURNVALUE関数によって返されることを望みますget_value_by_input()。返されたものを確認するために、最初にアラートを表示しています。

(これの実用的なアプリケーションは、たとえば、注文のクーポン コードです...クーポン コードを入力すると、データベースで確認され、クーポンの値が返されるか、有効なクーポン コードでない場合は 0 が返されます。 )

#VALUEINFO私の問題は、JavaScript の変数スコープで何かを台無しにしているに違いないということRETURNVALUEですno returnvalue specified

function get_value_by_input()
{
    var returnvalue;
    var valueinfo = $('#valueinfo');
    valueinfo.text('');
    var inputvalue = $("input[name='inputvalue']").val();
    var correctinput = /^[a-zA-Z]*$/i;
    if( inputvalue.length > 0 && correctinput.test(inputvalue))
    {
        $.post('ajax/valuecheck.php', {inputvalue_test: inputvalue}, function(is_valid){
            if(is_valid == 0)
            {
                       valueinfo.text('Sorry, this input is not working...');
                       returnvalue = 0;
            }
            if(is_valid != 0)
            {
                      valueinfo.text('the returned value for your input is '+is_valid);
                      returnvalue = is_valid;
            }
        });
    }
    else
    {
        if(inputvalue)
        {
            valueinfo.text('Invalid input.');
            returnvalue = 0;
        }
    }

    if(returnvalue)
    {
        alert('the value for this input was was '+returnvalue);
        return returnvalue;
    }
    else
    {
        alert('no returnvalue specified.');
        return 0;
    }
}

繰り返します が、#VALUEINFO で正しい戻り値が得られるにもかかわらず、このコードが常に「戻り値が指定されていません」と警告するのはなぜですか?

これはifブロックに関係していると思います。条件が満たされていない場合でも、javascriptはifブロック内の変数の設定を無視しないことを読みました...しかし、他にどのように値を#valueinfoに渡して返すことができますかそれと同時に?どんな助けや提案も大歓迎です! :-)

編集:

はい、変数スコープとは関係ありませんが、Asyncronus-jax に関するものです。私は自分のコードを再構築することになりました...get_value_by_input()今ではもっとprocess_input()関数になっています。最初にINPUTVALUEが正しいかどうかがチェックされ、エラーがない場合にのみ$.post(...が呼び出されます。PHPファイルによって返された値は、返されてから別の関数から使用されるのではなく、コールバック関数内ですぐに使用されます.done().今日はもうこの作業に長すぎました... -.- たぶん次回。今のところ動作します:)

4

1 に答える 1