0

PHPを使用してフォーム内の複数のフィールドを検証するために、いくつかのajaxコードを設定しました。コードは魅力のように機能しますが、使用する JavaScript を最小限に抑えたいと考えています。

以下のコードでわかるように、すべての入力フィールドを検証する getElements('input') ... を取得してから、検証する getElements('textarea') を取得しています... わかります! ;o) Textarea は以下のコードの最後の行であり、その後の JavaScript は inpt と同じです。PHP を使用してコントローラーの入力、テキストエリア、選択リスト、チェックボックスなどを検証していますが、取得後のコードは要素はまったく同じです。

だから私はスイッチケースを作ることができるかもしれないと考えていました.さもなければjavascriptを使って要素をループさせ、複製されたjavascriptを一度だけ書く....

それはできますか?

window.addEvent('domready', function(){
$('container').getElements('input').addEvent('keyup', function(e){
    //stop the input-tag event
    e = new Event(e).stop();
    //identify which item was activated
    var querystring = this.title;
    var value = this.value;
    var myXHR = new XHR({
        method: 'get',
        onSuccess: function(e){
            var myString = myXHR.response.text;
            var myStringArray = myString.split("###RAWR###");
            $(myStringArray[1]).innerHTML = '<em class="checking">&nbsp;</em>';
            setTimeout( ajax , 3500 );
            function ajax(){
                $(myStringArray[1]).innerHTML = '<em class="'+myStringArray[2]+'">'+myStringArray[0]+'</em>';
            }
        }
    });
    myXHR.send('index2.php?option=com_component&task=validate&value='+value, querystring);
});
$('container').getElements('textarea').addEvent('keyup', function(e){
4

1 に答える 1

0

タグ名を配列ループに入れて、検証で関数を呼び出すことができます。

window.addEvent('domready', function(){
    var tagNames = ["input", "textarea", "select"];
    for (var i = 0; i < tagNames.length; i++) 
    {
        validate(tagNames[i]);
    }   
});

function validate(tag)
{
    $('container').getElements(tag).addEvent('keyup', function(e){
        //stop the input-tag event
        e = new Event(e).stop();
        //identify which item was activated
        var querystring = this.title;
        var value = this.value;
        var myXHR = new XHR({
            method: 'get',
            onSuccess: function(e){
                var myString = myXHR.response.text;
                var myStringArray = myString.split("###RAWR###");
                $(myStringArray[1]).innerHTML = '<em class="checking">&nbsp;</em>';
                setTimeout( ajax , 3500 );
                function ajax(){
                    $(myStringArray[1]).innerHTML = '<em class="'+myStringArray[2]+'">'+myStringArray[0]+'</em>';
                }
            }
        });
        myXHR.send('index2.php?option=com_component&task=validate&value='+value, querystring);
    });
}
于 2013-06-25T14:28:19.433 に答える