-1

アンカー タグで onclick イベントを使用しています。アンカーをクリックすると、1 つの入力要素の値を変更してフォームを送信する Java スクリプト関数が呼び出されます。値は変更されますが、フォームは値を送信しません。これについて私を助けてください。参考までに、要素を作成して送信前にフォームに追加すると、機能します。最初のシナリオで機能しないのはなぜですか。

<form name="form" >    
    <input type="hidden" name="input" value="test"/>    
    <a onclick='testMethod("test")'>click </a>    
</form>

使用したスクリプトは

function testMethod(value)
{
    if(serviceName != null && jQuery('#form') != null)
    {
        document.forms['form'].getElementById('input').value = value;
        document.forms['form'].action = jQuery('#newAction').val();
        document.forms['form'].submit();
    }
}
4

1 に答える 1

1

ここでの主な問題は、1 つのセットがないときに id で入力にアクセスしようとしていることです。

(簡単に選択できるようにid、フォームと入力に追加されます):id

<form name="form" id="form">
    <input type="hidden" name="input" id="input" value="test" />
    <a onclick='testMethod("test")' >click</a>
</form>

そして、一致するJavaScript(jQueryのサポートが利用可能であることを示したため、jQueryのセレクターを使用するように更新しています):

function testMethod(value)
{
    var form = $('#form');
    if(serviceName != null && form.length)
    {
        $('#input').val(value);
        form.attr('action', $('#newAction').val());
        form.submit();
    }
}

DOM に onclick メソッドへのバインディングを含めずに、javascript で直接アタッチするようにコードを更新することもできます。

a要素を ID を持つように変更する:

<form name="form" id="form">
    <input type="hidden" name="input" id="input" value="test" />
    <a id="submitLink">click</a>
</form>

JavaScript は次のようになります。

$(document).ready(function() {
    $('#submitLink').on('click', function(event) {
        event.preventDefault();
        var form = $('#form');
        if(serviceName != null && form.length)
        {
            $('#input').val(value);
            form.attr('action', $('#newAction').val());
            form.submit();
        } 
    });
});
于 2012-11-04T07:43:24.157 に答える